Autore Topic: Spostamento ImageView  (Letto 1364 volte)

Offline faibe24

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Sistema operativo:
    Windows 7
Spostamento ImageView
« il: 30 Agosto 2010, 18:59:20 CEST »
0
Un Oggetto ImageView ha come metodo "setLayout(left,top,right,bottom)" per essere spostato.
Ho letto e riletto tutta la documentazione riguardo alla classe ImageView ma non riesco a risolvere il mio problema.
Voglio "semplicemente" spostare un ImageView in un punto dello schermo (per esempio left=10 top=100) ma quest ultima non si muove :(

Classe main
Codice (Java): [Seleziona]
package com.andev.it;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout);            
        ///////////////// PROVA INSERIMENTO PALLINA DA CLASSE "PALLINA" /////////////////////////////
        int sin=10;
        Pallina prova = new Pallina(getBaseContext(),sin,top);
        layout.addView(prova);
        ///////////////// FINE PROVA ///////////////////////////////////////////////////////////////           
        Toast.makeText(this, "LEFT:"+prova.getLeft() + ", TOP:"+prova.getTop(), 6000).show();
    }
}

Classe Pallina
Codice (Java): [Seleziona]
package com.andev.it;

import android.content.Context;
import android.widget.ImageView;

public class Pallina extends ImageView{

        int left;
        int top;
       
        public Pallina(Context context,int sinistra,int sopra) {
                super(context);
                // TODO Auto-generated constructor stub
                setImageResource(R.drawable.pallina);
                layout(sinistra,sopra,0,0);
                refreshDrawableState();
        }

}

Main .xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:id="@+id/layout"
   >
</RelativeLayout>

Un Grazie Anticipato a tutti quelli che si impegneranno a rispondermi

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Spostamento ImageView
« Risposta #1 il: 30 Agosto 2010, 21:52:25 CEST »
0
ti consiglio di usare una view personalizzata, estendendo View o SurfaceView. poi usi il Canvas (fornito da onDraw()) per disegnare le Bitmap dove vuoi.


Offline faibe24

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Sistema operativo:
    Windows 7
Re:Spostamento ImageView
« Risposta #2 il: 31 Agosto 2010, 13:06:44 CEST »
0
Intanto grazie per la risposta....
Purtroppo non sono molto ferrato in argomento "Canvas" non è che potresti postare un esempio?

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:Spostamento ImageView
« Risposta #3 il: 31 Agosto 2010, 17:03:52 CEST »
0
usa il metodo "layout()" invece di quello che hai trovato. perdona se non metto il link ma ho poco tempo, ad ogni modo dovresti trovarlo nella documentazione della classe View. Il metodo funziona perchè l'ho usato io stesso e se spulci nel forum c'è già un altro che aveva circa lo stesso problema, a cui ho risposto  ;-)
se hai problemi rispondi qui sotto

Offline faibe24

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Sistema operativo:
    Windows 7
Re:Spostamento ImageView
« Risposta #4 il: 31 Agosto 2010, 19:59:18 CEST »
0
Si si.... ho provato sia ad usare il metodo layout(...) sia a cercare qui nel forum notizie a riguardo.
ho trovato il problema del ragazzo che voleva un pulsante che si spostasse ogni volta si cercasse di premerlo.
IL PROBLEMA è CHE NON VA :(
IL METODO LAYOUT() NON SPOSTA NULLA.... visualizzando poi .getLeft() .getTop() i valori cambiano ma l'immagine è sempre ferma in alto a sinistra.... :(
HELP ME!

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Spostamento ImageView
« Risposta #5 il: 31 Agosto 2010, 20:21:52 CEST »
+1
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <Button
                android:text="Cambia Posizione"
                android:id="@+id/Button01"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
        </Button>

        <ch.egsolutions.canvasdrawing.CustomView
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:id="@+id/customView" />

</LinearLayout>
Codice (Java): [Seleziona]
package ch.egsolutions.canvasdrawing;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
        CustomView cv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        cv=(CustomView)findViewById(R.id.customView);
        Button b=(Button)findViewById(R.id.Button01);
        b.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                cv.updatePosition();
                               
                        }
                });
    }
}

Codice (Java): [Seleziona]
package ch.egsolutions.canvasdrawing;

import java.util.Random;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;

public class CustomView extends View {

        Bitmap bmp;
        Random rnd;
       
        int w,h,bw,bh;
        int px=-1,py=-1;
        public CustomView(Context context, AttributeSet attrs) {
                super(context, attrs);
                bmp=BitmapFactory.decodeResource(context.getResources(), R.drawable.icon);     
                bw=bmp.getWidth();
                bh=bmp.getHeight();
                rnd=new Random();
               
        }
       
       
        @Override
        protected void onDraw(Canvas canvas) {
                // TODO Auto-generated method stub
                super.onDraw(canvas);
               


               
                if(px==-1&&py==-1){ // se non abbiamo ancora settato le coordinate, posizioniamo la bmp al centro
                        px=w/2-bw/2;
                        py=h/2-bh/2;
                }
                               
               
               
                canvas.drawBitmap(
                                bmp,
                                px,
                                py,
                                null);
        }
       
       
        public void updatePosition(){
               
                //posizione random all interno della view
                px=rnd.nextInt(w-bw);
                py=rnd.nextInt(h-bh);
                invalidate();
        }
       
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                //registriamo le dimensioni della view
                w=MeasureSpec.getSize(widthMeasureSpec);
                h=MeasureSpec.getSize(heightMeasureSpec);
                setMeasuredDimension(w,h);
        }
       

}

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Spostamento ImageView
« Risposta #6 il: 31 Agosto 2010, 20:27:27 CEST »
0
IL METODO LAYOUT() NON SPOSTA NULLA.... visualizzando poi .getLeft() .getTop() i valori cambiano ma l'immagine è sempre ferma in alto a sinistra.... :(
HELP ME!
prova a chiamare invalidate() sul layout ;)

Offline faibe24

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Sistema operativo:
    Windows 7
Re:Spostamento ImageView
« Risposta #7 il: 01 Settembre 2010, 01:35:38 CEST »
0
niente....anche con invalidate() non cambia nulla  :'(

Offline johncasey

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note II
  • Play Store ID:
    OTIC SOFTWARE
  • Sistema operativo:
    Windows 7
Re:Spostamento ImageView
« Risposta #8 il: 06 Giugno 2013, 18:32:02 CEST »
0
prova con:

imageView.setX(valore della x);
imageView.setY(valore della y);

dove imageView sta per la tua imageView...

;-)

fammi sapere