ImageView imageView=new ImageView(this); imageView.setScaleType(ScaleType.MATRIX); bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.verticalimagetest); LayoutParams params=new LayoutParams(300,300); imageView.setLayoutParams(params); imageView.setImageBitmap(bitmap); imageView.setBackgroundColor(Color.GREEN); mainLayout.addView(imageView);Alla luce degli altri metodi che ho visto per definire i parametri di un'ImageView, ne sperimento altri...
Invece di:
LayoutParams params=new LayoutParams(300,300); imageView.setLayoutParams(params);provo a usare:
imageView.getLayoutParams().width=300; imageView.getLayoutParams().height=300;E vediamo che succede con questo codice (ho separato le varie righe per avere una suddivisione più schematica)
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.verticalimagetest); ImageView imageView=new ImageView(this); imageView.getLayoutParams().width=300; imageView.getLayoutParams().height=300; imageView.setImageBitmap(bitmap); imageView.setBackgroundColor(Color.GREEN); mainLayout.addView(imageView);Il programma si blocca in modo anomalo.
Ragiono un po' e penso che forse questo sarà perché la ImageView non è stata ancora "distesa" sul mainLayout.
Quindi provo a posporre il codice che ne stabilisce le dimensioni a dopo la riga mainLayout.addView(imageView)
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.verticalimagetest); ImageView imageView=new ImageView(this); imageView.setImageBitmap(bitmap); imageView.setBackgroundColor(Color.GREEN); mainLayout.addView(imageView); imageView.getLayoutParams().width=300; imageView.getLayoutParams().height=300;e funziona.
Provo anche anteponendo il mainLayout.addView(imageView)
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.verticalimagetest); ImageView imageView=new ImageView(this); mainLayout.addView(imageView); imageView.getLayoutParams().width=300; imageView.getLayoutParams().height=300; imageView.setImageBitmap(bitmap); imageView.setBackgroundColor(Color.GREEN);E funziona lo stesso: sì, il problema era proprio quello!
Adesso gioco un attimo con le dimensioni dell'immagine:
mainLayout.addView(imageView); imageView.getLayoutParams().width=50; imageView.getLayoutParams().height=50;e funziona ugualmente.
Molto meglio, quindi, per brevità, attribuire le dimensioni con questo metodo anziché creando un oggetto LayoutParams come facevo prima.
Provo anche a impostare la posizione:
mainLayout.addView(imageView); imageView.getLayoutParams().width=100; imageView.getLayoutParams().height=100; imageView.setX(200); imageView.setY(100);e funziona, nel senso che mi sposta la ImageView come previsto...
Provo a porre i metodi che stabiliscono la posizione prima della famosa riga mainLayout.addView(imageView)...
imageView.setX(200); imageView.setY(100); mainLayout.addView(imageView); imageView.getLayoutParams().width=100; imageView.getLayoutParams().height=100;...e scopro che questi funzionano ugualmente, a differenza dei metodi usati per stabilire le dimensioni.
Bene.
Ora mi occupo dello spostamento dell'immagine, per il quale voglio studiare come si stabiliscono dei limiti
Scrivo il codice, che però stavolta costruisco con scrollBy.
View.OnTouchListener onTouchListener=new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()){ case MotionEvent.ACTION_DOWN: X=event.getX(); Y=event.getY(); break; case MotionEvent.ACTION_MOVE: currentX=event.getX(); currentY=event.getY(); v.scrollBy((int)(X-currentX),(int)(Y-currentY)); X=currentX; Y=currentY; break; } return true; } }; imageView.setOnTouchListener(onTouchListener);...e funziona alla grande!
Riaggiusto un po' la posizione dell'ImageView per meglio rendermi agevole l'ìnterazione con essa... e vado a studiare la parte nuova!
Nessun commento:
Posta un commento