myślę, że lepszym rozwiązaniem byłoby stworzenie własnego ImageView i zastąpić metodę OnDraw.Coś jak:
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();
}
}
Byłoby to dobry pomysł, aby wdrożyć niektóre logiki, która sprawdza, czy jest świeże bitmapy do nabycia za pośrednictwem metody update(), tak, że kod wewnątrz OnDraw nie wykona za każdym razem i umieścić na górze systemu.
A następnie użyj niestandardowego widoku, gdziekolwiek go potrzebujesz. Najprostszym sposobem byłoby zadeklarować go bezpośrednio wewnątrz activity_layout.xml jako takie:
<com.mycustomviews.CustomView
android:id="@+id/customView"
android:layout_centerInParent="true"
android:layout_height="135dp"
android:layout_width="240dp"
android:background="@android:color/transparent"/>
I wtedy dostęp jest w kodzie jak każdy inny widok za pomocą:
customView = (CustomView) findViewById(R.id.customView);
Proszę zaktualizować link. Blog został usunięty –