2013-02-03 2 views
0

SurfaceView를 확장하는 클래스 XYZ를 만들었습니다. onDraw 메서드 내에서 이미지가있는 비트 맵 배열을 만든 다음 drawBitmap 메서드를 사용하여 이미지를 캔버스에 배치했습니다. 다른 클래스의 캔버스에 대한 액세스

public class MyActivity extends Activity { 
public Context context = this; 
    public Board myGameBoard; 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_start_game); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
      // Show the Up button in the action bar. 
      getActionBar().setDisplayHomeAsUpEnabled(true); 
     } 
} 

public void changeImage(View view){ 
    //here I want to change the image 
    } 
} 

(나는 게시 :이 버튼을 클릭 한 후 내 캔버스에 이미지를 변경하려면 MyActivity,의,

public class Board extends SurfaceView{ 


    public BitmapFactory myBitmapFactory = new BitmapFactory(); 
    public Bitmap myBitmap = new Bitmap(); 
    protected void onDraw(Canvas canvas) { 
      myBitmap = Bitmap.createScaledBitmap(myBitmapFactory.decodeResource(getResources(), R.drawable.image), size, size, false); 

Paint paint = new Paint(); 
canvas.drawBitmap(myBitmap, x, y, paint); 

그리고 두 번째 클래스가이 더 많거나 적은 같은 외모 나는 이미지를 추가하는 책임이 있다고 생각하는 코드의 가장 중요한 부분 만).

그러나 로컬 변수이기 때문에 onDraw 메서드 내에서 사용하고있는 캔버스에 어떻게 접근해야할지 모르겠다. 이미지를 바꿀 수 있으려면 어떻게해야합니까?

답변

1

Board 클래스에 새로운 설정기를 추가하십시오. setBitmap(Bitmap). 거기에 비트 맵 참조를 저장하고 onDraw()이 다시 호출되도록보기를 무효화하십시오. onDraw에서 설정된 비트 맵을 읽습니다. 끝난!

관련 문제