SurfaceViewで手書きした画像を内部ストレージに(複数)保存してそれをGridViewで表示し、それを選択すると再度SurfaceViewで表示したいのですがやり方がわかりません。
drawableにある画像をSurfaceViewに表示するやり方はわかったのですが、上記がわかりませんのでご教示お願い致します。
<MainActivity.java>
java
1import android.app.Activity; 2import android.content.Intent; 3import android.os.Bundle; 4import android.view.View; 5import android.view.View.OnClickListener; 6import android.widget.AdapterView; 7import android.widget.Button; 8import android.widget.GridView; 9 10import java.io.File; 11import java.util.ArrayList; 12import java.util.List; 13 14public class MainActivity extends Activity implements OnClickListener { 15 16 private Button mNewBtn; 17 private GridView gridView; 18 private GridAdapter gridAdapter; 19 private List<String> imgFilePaths = new ArrayList<String>(); 20 21 @Override 22 protected void onCreate(Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.activity_main); 25 26 String filesDirectoryPath = getFilesDir().getPath(); 27 File[] imgFiles = new File(filesDirectoryPath).listFiles(); 28 29 for (File imgFile : imgFiles) { 30 imgFilePaths.add(imgFile.getAbsolutePath()); 31 } 32 33 gridView = findViewById(R.id.gridview); 34 gridAdapter = new GridAdapter(this, R.layout.grid_item, imgFilePaths); 35 gridView.setAdapter(gridAdapter); 36 37 gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 38 public void onItemClick(AdapterView parent, View v, int position, long id) { 39 //Toast.makeText(MemoList.this, "" + position, Toast.LENGTH_SHORT).show(); 40 Intent intent = new Intent(getApplication(), Main2Activity.class); 41 intent.putExtra("IMAGEID", imgFilePaths.get(position)); 42 startActivity(intent); 43 } 44 }); 45 } 46} 47
<Main2Activity.java>
java
1import android.content.Intent; 2import android.graphics.Bitmap; 3import android.graphics.BitmapFactory; 4import android.os.Bundle; 5import android.support.v7.app.AppCompatActivity; 6import android.util.Log; 7 8public class Main2Activity extends AppCompatActivity { 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_main2); 14 15 String IMAGEID = getIntent().getStringExtra("IMAGEID"); 16 if (IMAGEID != null) { 17 Intent intent = getIntent(); 18 String keyword = intent.getStringExtra("IMAGEID"); 19 Bitmap bitmap = BitmapFactory.decodeFile(keyword); //これをSurfaceViewで表示したい 20 Log.d("bitmap", "「" + bitmap + "」"); 21 } else { 22 } 23 } 24} 25
<SimpleSurface.java>
java
1import android.content.Context; 2import android.content.res.Resources; 3import android.graphics.Bitmap; 4import android.graphics.BitmapFactory; 5import android.graphics.Canvas; 6import android.graphics.Color; 7import android.graphics.Paint; 8import android.graphics.Path; 9import android.util.AttributeSet; 10import android.view.MotionEvent; 11import android.view.SurfaceHolder; 12import android.view.SurfaceView; 13 14public class SimpleSurface extends SurfaceView { 15 Path path; 16 Paint p; 17 18 public SimpleSurface(Context context, AttributeSet attrs, int defStyle) { 19 super(context, attrs, defStyle); 20 init(); 21 } 22 23 public SimpleSurface(Context context, AttributeSet attrs) { 24 super(context, attrs); 25 init(); 26 } 27 28 public SimpleSurface(Context context) { 29 super(context); 30 init(); 31 } 32 33 private void init() { 34 p = new Paint(); 35 p.setColor(Color.BLUE); 36 p.setStrokeWidth(3); 37 p.setStyle(Paint.Style.STROKE); 38 p.setStrokeJoin(Paint.Join.ROUND); 39 path = new Path(); 40 getHolder().addCallback( 41 new SurfaceHolder.Callback() { 42 public void surfaceChanged(SurfaceHolder holder, int format, int width, 43 int height) { 44 } 45 46 public void surfaceCreated(SurfaceHolder holder) { 47 draw(holder); 48 } 49 50 public void surfaceDestroyed(SurfaceHolder holder) { 51 } 52 } 53 ); 54 } 55 56 private void draw(SurfaceHolder holder) { 57 Canvas canvas = holder.lockCanvas(); 58 canvas.drawColor(Color.WHITE); 59 60 //ここをGridViewで選択した画像にしたい 61 /*Resources res = this.getContext().getResources(); 62 Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.finger);*/ 63 64 canvas.drawBitmap(bitmap, 0, 0, p); 65 canvas.drawPath(path, p); 66 holder.unlockCanvasAndPost(canvas); 67 } 68 69 @Override 70 public boolean onTouchEvent(MotionEvent event) { 71 switch (event.getAction()) { 72 case MotionEvent.ACTION_DOWN: 73 path.moveTo(event.getX(), event.getY()); 74 break; 75 case MotionEvent.ACTION_MOVE: 76 path.lineTo(event.getX(), event.getY()); 77 break; 78 case MotionEvent.ACTION_UP: 79 path.lineTo(event.getX(), event.getY()); 80 break; 81 } 82 draw(getHolder()); 83 return true; 84 } 85}
<activity_main2.xml>
xml
1<?xml version="1.0" encoding="utf-8"?> 2<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 > 6 7 <orust.co.jp.handwrite.SimpleSurface 8 android:id="@+id/ss" 9 android:layout_width="match_parent" 10 android:layout_height="match_parent" 11 /> 12 13</RelativeLayout>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/25 07:37