penso che un approccio migliore sarebbe quello di creare un ImageView personalizzato e l'override del metodo OnDraw.Qualcosa di simile:
public class CustomView extends ImageView {
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, AttributeSet attrst) {
super(context, attrst);
}
public CustomView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
MyBitmapFactory bitMapFac = null;
public void setBitmapFactory(MyBitmapFactory bitMapFac)
{
this.bitMapFac = bitMapFac;
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawColor(Color.TRANSPARENT);
/*instantiate a bitmap and draw stuff here, it could well be another
class which you systematically update via a different thread so that you can get a fresh updated
bitmap from, that you desire to be updated onto the custom ImageView.
That will happen everytime onDraw has received a call i.e. something like:*/
Bitmap myBitmap = bitMapFac.update(); //where update returns the most up to date Bitmap
//here you set the rectangles in which you want to draw the bitmap and pass the bitmap
canvas.drawBitmap(myBitMap, new Rect(0,0,400,400), new Rect(0,0,240,135) , null);
super.onDraw(canvas);
//you need to call postInvalidate so that the system knows that it should redraw your custom ImageView
this.postInvalidate();
}
}
Sarebbe una buona idea di implementare una logica che controlla se v'è una bitmap fresco di acquisire tramite il metodo update(), in modo che il codice all'interno OnDraw non verrà eseguito ogni volta e mettere in testa al sistema.
E quindi utilizzare la vista personalizzata ovunque ne abbiate bisogno. Il modo più semplice sarebbe quella di dichiarare direttamente all'interno del activity_layout.xml in quanto tale:
<com.mycustomviews.CustomView
android:id="@+id/customView"
android:layout_centerInParent="true"
android:layout_height="135dp"
android:layout_width="240dp"
android:background="@android:color/transparent"/>
E poi l'accesso è nel codice come qualsiasi altra vista utilizzando:
customView = (CustomView) findViewById(R.id.customView);
Si prega di aggiornare il collegamento. Il blog è stato rimosso –