Activity クラスと CustomView クラスを作成しました。Activity クラスは、ローカル ストレージ (ギャラリー) から画像を取得し、ImageView として表示できます。CustomView クラスは、落書き、消去、保存などの基本的な描画機能で構築されています。
問題は、ギャラリーから画像を取得した後、その画像を Activity クラスから CustomView クラスに渡して編集する必要があるということです。どうすればいいですか?
これが私の CustomView クラスです(不要なコードを削除し、メソッド名のみを表示しました):
class DrawView extends View {
public DrawView(Context context, AttributeSet attrs){
super(context, attrs);
setupDrawing();
}
private void setupDrawing(){
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
drawCanvas = new Canvas(canvasBitmap);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float touchX = event.getX();
float touchY = event.getY();
//respond to down, move and up events
//redraw the view
}
//draw view - after touch event
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint);
canvas.drawPath(drawPath, drawPaint);
}
}
そして、これは私の MainActivity クラスです:
public class MainActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//call the custom drawing view
drawView = (DrawView)findViewById(R.id.drawable);
}
@Override
public void onClick(View view){
if(view.getId()==R.id.Go){
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
Intent i = new Intent(this, DrawView.class);
i.putExtra(picturePath, true);
}
}
ImageView を使用して get image メソッドをテストしましたが、成功しました。問題は、画像を CustomView に渡して編集する方法です。