タップした画像(ImageView)の移動に関して、現在
public class test extends Activity implements OnClickListener{
private ImageView hogeImg;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
hogeImg = (ImageView)findViewById(path);
//C言語の様に扱いたかったため、ここでループさせています
UpdataTest = new Runnable() {
public void run(){
mHandler.removeCallbacks(UpdataTest);
mHandler.postDelayed(UpdataTest, 33);
}
};
mHandler.postDelayed(UpdataTest, 33);
}
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
int tx = (int)event.getRawX();
int ty = (int)event.getRawY();
int vx = hogeImg.getLeft();
int vy = hogeImg.getTop();
int vw = hogeImg.getWidth();
int vh = hogeImg.getHeight();
if( (vx < tx) && ((vx + vw) > tx) && ((vy+vh) < ty) && ((vy + vh*2) > ty) ){
hogeImg.layout(vx, vy - vh/2, vx + vw, vy + vh/2);
Log.d("tuuka","tuuka");
}
}
}
}
この様なソースですが(今例をこちらで組んだため、インデントずれご容赦下さい)、画像をタップすると一瞬動いた後元に戻ってしまいます。
当初onTouch内でImageViewの生成を行っていたために座標の初期化が行われると思い、生成を外に出しましたが影響はありませんでした。
無理にループさせている事が原因なのか、あるいはグラフィカルレイアウトが何かしら影響を与えているのか皆目検討がつかず質問させて頂きました。
JavaもAndroid開発も初めてのため、一般的なソースの書き方が分からない点ご容赦下さい。
(毎フレーム呼び出される関数が無かったり、毎フレーム描画をしなかったり、かなり戸惑いの連続でした。)