2013-05-08 1 views
2

У меня есть класс, который расширяет View и имеет метод OnDraw реализован в моем файле XML у меня есть FrameLayout с моей точки зрения и RelativeLayout с кнопкойКак перерисовать холст в представлении от деятельности

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
<canvas.pruebas.MyView 
android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
/> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <Button   
      android:id="@+id/btn" 
      android:layout_width="100dp"   
      android:layout_height="wrap_content" 
      android:text="hello" 
      android:textSize="15sp" 

      /> 
    </RelativeLayout> 
</FrameLayout> 

в моем классе активность я хочу осуществить, когда я нажимаю на кнопку перерисовывать холст в MyView классе

public class CanvasActivity extends Activity { 
    Button btn; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btn=(Button)findViewById(R.id.btn); 
     btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       //redraw canvas 
      } 
     }); 
    } 
} 

Как я могу это сделать?

ответ

5

использование invalidate().

Сначала немного изменить XML, чтобы добавить идентификатор:

<canvas.pruebas.MyView android:id="@+id/mycanvasview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
/> 

затем в коде,

... 
    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // get your view 
      canvas.pruebas.MyView myCanvas = (canvas.pruebas.MyView) findViewById(R.id.mycanvasview); 
      //redraw canvas 
      myCanvas.invalidate(); 
     } 
    }); 
+0

спасибо, это то, что мне нужно было – jos11

+0

@ jos11. если бы это сработало для вас, можете ли вы принять его в качестве ответа? – petey

+0

Извините, что ваш ответ так и не был принят, но +1 от меня за то, что мне нужно! – kalenpw