我需要刷新imageView一个按钮(invalidate不起作用)

时间:2014-10-29 12:00:40

标签: android button imageview refresh invalidation

我有一个custom ImageView我可以绘制,缩放和绘制点(坐标)。

I have a button "reset" which delete the coordinates i draw

但是当我点击时,我的imageView不会刷新,当我触摸屏幕时,它会刷新。

要看一些代码

此处按钮的onClick - btnRes

是我需要帮助的按钮!

//this method is on the "Main extends Activity"
public void onClick(View v) {
        switch(v.getId()){
        case R.id.btnFin:
            break;
        case R.id.btnInv:
            break;
        case R.id.btnRes://start over
            Imagen.listaPtos.clear();
            //refreshing image
            imagen.invalidate();//dont works
            imagen.refreshDrawableState();//dont works neither
            break;
        }
    }

关于My class Imagen的一些事情是为了理解代码之后的

public class Imagen extends ImageView

static ArrayList <Marking> listaPtos = new ArrayList<Marking>(); 

来自Imagen的一些代码

@Override
public void onDraw(Canvas c){
    Log.d("onDraw","pinta="+pinta);
    c.drawBitmap(bitmap, matrix, paintFondo);

    if(listaPtos!=null){
        for(Marking mark:listaPtos){                
            c.drawBitmap(cruz, mark.x, mark.y, paintPuntos);
        }
    }
}

//for coordinates
class Marking{
int x;
int y;
Marking(int x, int y){
    this.x = x;
    this.y = y;
}
Marking(){}
int getX(){
    return x;
}
int getY(){
    return y;
}
void setX(int x){
    this.x = x;
}
void setY(int y){
    this.y = y;
}   

}

任何想法?

1 个答案:

答案 0 :(得分:0)

我用这个代码在onDraw上解决它:

((Main) context).runOnUiThread(new Runnable() {
           @Override
           public void run() {

               Imagen.this.invalidate();

           }
     });

不是最好的解决方案,而是工作的人

thx:https://stackoverflow.com/a/21732444/4116091