Sto provando a creare dinamicamente e quindi spostare un'immagine in un'attività Android. Tuttavia, i metodi setX() e setY() sembrano non funzionare correttamente. Imposta correttamente la posizione di un'immagine quando viene creata e posizionata per la prima volta, ma qualsiasi tentativo di aggiornarla determina il posizionamento dell'immagine nel punto sbagliato. Ad esempio, l'immagine si sposta sulla seguente codice:Android setX() e setY() si comportano in modo strano
ImageView image;
RelativeLayout layout = (RelativeLayout)findViewById(R.id.activity_this);
if(action == MotionEvent.ACTION_DOWN){
image = new ImageView(MyClass.this);
layout.addView(image, width, height);
image.setX(206);
image.setY(206);
}
else if(action == MotionEvent.ACTION_MOVE){
if(image != null){
image.setX(206);
image.setY(206);
}
}
Sulla ACTION_MOVE l'immagine viene spostata anche se i valori posizione xey rimangono gli stessi. Il genitore dell'immagine rimane lo stesso. La dimensione rimane la stessa. Se ottengo i valori x e y, continuerò a dire 206, ma non è più posizionato in (206, 206) sull'attività. Mi sono perso perché questo sta accadendo. Non riesco a trovare alcuna indicazione che l'immagine sia stata alterata tranne che per la posizione che cambia fisicamente.
Tyvm per la risposta. Usare params funziona per me. Sono ancora curioso di sapere cosa sta succedendo con setX e Y. Ho provato tutto ma ogni volta che imposto un valore dopo che è già stato impostato nell'evento down (indipendentemente da come imposto il nuovo valore) l'immagine viene spostata nella posizione sbagliata. È spento da un valore costante di circa 30 pixel troppo in alto ea sinistra dell'emulatore con cui sto testando. Ho pensato che dovesse cambiare il genitore della vista o qualcosa del genere, ma non è così. Non c'è letteralmente niente di diverso che io possa trovare. – user2423199
Potrebbe essere la densità? Quando si impostano i numeri in modo programmatico, è necessario moltiplicare per getResources(). GetDisplayMetrics(). Density per modificare i valori px in valori dp – marmor