下のコードはサンプルコードの丸写しです。
ただタップした画像をドラッグして動かすというだけのものです。
下のMainActivityのコードから、
view.performClick();
という1文を消しても正常に動作するのですが、performClick();とは何なのでしょうか?
MainActivity ------------------------------------------------------ import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnTouchListener { private CustomImageView customImageView; private int preDx, preDy; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = findViewById(R.id.textView); customImageView = this.findViewById(R.id.imageView); customImageView.setOnTouchListener(this); } @Override public boolean onTouch(View view, MotionEvent motionEvent) { int newDx = (int) motionEvent.getRawX(); int newDy = (int) motionEvent.getRawY(); switch (motionEvent.getAction()) { case MotionEvent.ACTION_MOVE: // 下の1文を取り除いても正常の動作をする。 view.performClick(); int dx = customImageView.getLeft() + (newDx - preDx); int dy = customImageView.getTop() + (newDy - preDy); int imgW = dx + customImageView.getWidth(); int imgH = dy + customImageView.getHeight(); customImageView.layout(dx, dy, imgW, imgH); String str = "dx=" + dx + "dy=" + dy; textView.setText(str); break; case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_UP: break; default: break; } preDx = newDx; preDy = newDy; return true; } }
import android.content.Context;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;
public class CustomImageView extends AppCompatImageView{
public CustomImageView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean performClick() { super.performClick(); return true; }
}