Androidアプリ作成初心者です。
エラーがたくさん出るので対処法を教えてください。
import android.os.Environment;
import android.view.MotionEvent;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.FrameLayout;
import android.widget.Toast;
import android.content.ClipData;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import java.io.InputStream;
import android.view.MotionEvent;
import static android.app.Activity.RESULT_OK;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class selectActivity extends AppCompatActivity {
int picnum = 0; FrameLayout frame; // 読み込んだ画像を表示するImageView private ImageView picture; //画像を読み込むときに使用する変数 private static final int REQUEST_ORIGIN = 0; //どのスタンプをドラッグしているのかを判断する変数 String stampName; //Image Viewの配列を用意 private ImageView stamp[] = new ImageView[4]; //ドロップする座標を取得するための変数 float x; float y; //ドラッグしているものがpictureの中にあるか判定する変数 boolean flag = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_select); //スタンプを追加するViewを関連付け frame = (FrameLayout)findViewById(R.id.framelayout) ; //画像を表示するImageViewを関連付け picture = (ImageView) findViewById(R.id.picture); public void addView(int stampNum){ ImageView image = new ImageView(getApplicationContext()); image.setImageResource(getResources().getIdentifier("stamp" + stampNum, "drawable", getPackageName())); frame.addView(image, stamp[stampNum].getWidth(), stamp[stampNum].getHeight()); image.setTranslationX(x - (stamp[stampNum].getWidth()) / 2); image.setTranslationY(y - (stamp[stampNum].getHeight()) / 2); } public void select(View v){ Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent, REQUEST_ORIGIN); } //ImageViewの配列を関連付け for (int i = 0; i < 4; i++) { stamp[i] = (ImageView) findViewById(getResources().getIdentifier("imageView" + i, "id", getPackageName())); } stamp[0].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { stampName = "phone"; ClipData data = ClipData.newPlainText("stamp0", "Drag"); view.startDrag(data, new View.DragShadowBuilder(view), (Object) view, 0); return false; } }); stamp[1].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { stampName = "pen case"; ClipData data = ClipData.newPlainText("stamp1", "Drag"); view.startDrag(data, new View.DragShadowBuilder(view), (Object) view, 0); return false; } }); stamp[2].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { stampName = "pen"; ClipData data = ClipData.newPlainText("stamp2", "Drag"); view.startDrag(data, new View.DragShadowBuilder(view), (Object) view, 0); return false; } }); stamp[3].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { stampName = "glass"; ClipData data = ClipData.newPlainText("stamp3", "Drag"); view.startDrag(data, new View.DragShadowBuilder(view), (Object) view, 0); return false; } }); picture.setOnTouchListener(new View.OnDragListener() { @Override public boolean onDrag(View view, DragEvent dragEvent) { switch (dragEvent.getAction()) { case DragEvent.ACTION_DRAG_EXITED: flag = false; break; case DragEvent.ACTION_DROP: x = dragEvent.getX(); y = dragEvent.getY(); break; case DragEvent.ACTION_DRAG_ENTERED: flag = true; break; default: break; } return true; } }); for(int i = 0; i < 4; i++){ stamp[i].setOnDragListener(new View.OnDragListener(){ @Override public boolean onDrag(View view, DragEvent dragEvent){ if(dragEvent.getAction() == DragEvent.ACTION_DRAG_ENDED){ if(flag){ switch (stampName){ case "phone": addView(0); break; case "pen case": addView(1); break; case "pen": addView(2); break; case "glass": addView(3); break; } } return true; } return false; } }); } } public class PinchGestureDetector { public static final String TAG = PinchGestureDetector.class.getName(); private float scale = 1.0f; private float distance; private float preDistance; private PinchGestureListener pinchGestureListener; public interface PinchGestureListener { void onPinchGestureListener(PinchGestureDetector dragGestureDetector); } public PinchGestureDetector(PinchGestureListener dragGestureListener) { this.pinchGestureListener = dragGestureListener; } public float getScale() { return this.scale; } public float getDistance() { return this.distance; } public float getPreDistance() { return this.preDistance; } synchronized public boolean onTouchEvent(MotionEvent event) { float eventX = event.getX() * scale; float eventY = event.getY() * scale; int count = event.getPointerCount(); int action = event.getAction() & MotionEvent.ACTION_MASK; int actionPointerIndex = event.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK; switch (action) { case MotionEvent.ACTION_DOWN: { /** 最初のpointしか来ない */ break; } case MotionEvent.ACTION_MOVE: { if (count == 2) { float multiTouchX = event.getX(1) * scale; float multiTouchY = event.getY(1) * scale; distance = culcDistance(eventX, eventY, multiTouchX, multiTouchY); pinchGestureListener.onPinchGestureListener(this); scale *= distance / preDistance; preDistance = distance; } break; } case MotionEvent.ACTION_POINTER_DOWN: { /** 2本の位置を記録 以後、moveにて距離の差分を算出 */ if (count == 2) { int downId = actionPointerIndex >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; float multiTouchX = event.getX(downId) * scale; float multiTouchY = event.getY(downId) * scale; distance = culcDistance(eventX, eventY, multiTouchX, multiTouchY); pinchGestureListener.onPinchGestureListener(this); preDistance = distance; } break; } case MotionEvent.ACTION_POINTER_UP: { distance = 0; preDistance = 0; scale = 1.0f; break; } default: } return false; }
あなたの回答
tips
プレビュー