馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
我想請問一下,我讓A移動到A1(如圖),B移到B1(如圖),如果大小一樣就黏住不再移動,不一樣就彈回原來的位置
請問該怎做才好?
因為我反彈回去後都不是原先位置
麻煩請各位高手教我
附上代碼
public class PlayFirst extends Activity implements OnTouchListener{
private ImageView moveimage[]=new ImageView[7];
private ImageView pictimage[]=new ImageView[7];
private ImageView demo;
private ImageView ima;
private ImageView ima1;
private ImageView ima2;
private ImageView ima3;
private ImageView ima4;
private ImageView ima5;
private ImageView ima6;
private ImageView ima7;
private Button backbtn;
private Button homebtn;
private int moveIma[] = { R.id.imageView1, R.id.imageView2,
R.id.imageView3, R.id.imageView4, R.id.imageView5, R.id.imageView6,
R.id.imageView7 };
private int imaView[] = { R.id.imageVieW8, R.id.imageView9,
R.id.ImageView10, R.id.ImageView11, R.id.ImageView12,
R.id.ImageView13, R.id.ImageView14 };
private int mode = 0;
private static final int MODE_DRAG = 1;// 拖曳狀態
private PointF startPoint = new PointF();
private Matrix matrix = new Matrix();
private Matrix currentMatrix = new Matrix(); // 當前矩陣
int array[] = new int[7];
int ary[]=new int[7];
private TranslateAnimation trans;
DisplayMetrics dm;
int ScreenX,ScreenY;
int width,height;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_play);
final AbsoluteLayout Absolute = (AbsoluteLayout) findViewById(R.id.absol);
dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
ScreenX=dm.widthPixels;
ScreenY=dm.heightPixels;
backbtn=(Button)findViewById(R.id.backbtn);
backbtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setClass(PlayFirst.this, Directory.class);
startActivity(intent);
PlayFirst.this.finish();
}
});
homebtn=(Button)findViewById(R.id.homebtn);
homebtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setClass(PlayFirst.this, Tangram.class);
startActivity(intent);
PlayFirst.this.finish();
}
});
moveimage[0] = ima=new ImageView(this);
moveimage[1] = ima1=new ImageView(this);
moveimage[2] = ima2=new ImageView(this);
moveimage[3] = ima3=new ImageView(this);
moveimage[4] = ima4=new ImageView(this);
moveimage[5] = ima5=new ImageView(this);
moveimage[6] = ima6=new ImageView(this);
for(int x=0;x<7;x++){
moveimage[x] = (ImageView) findViewById(moveIma[x]);
}
for(int x=0;x<7;x++){
demo=moveimage[x] ;
demo.setOnTouchListener(this);
width= (int)demo.getX();
height= (int)demo.getY();
}
for(int x=0;x<=6;x++){
pictimage[x] = (ImageView) findViewById(imaView[x]);
pictimage[x].setAlpha(100);
}
}
public boolean onTouch(View v, MotionEvent event) {
ImageView myimage = (ImageView) v;
AbsoluteLayout.LayoutParams p = null;
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
mode = MODE_DRAG;
currentMatrix.set(myimage.getImageMatrix());
startPoint.set(event.getX(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
if (mode == MODE_DRAG) {
float dx = event.getX() - startPoint.x;
float dy = event.getY() - startPoint.y;
p = new AbsoluteLayout.LayoutParams(
AbsoluteLayout.LayoutParams.WRAP_CONTENT,
AbsoluteLayout.LayoutParams.WRAP_CONTENT,
myimage.getLeft() + (int) dx,(int) (myimage.getTop() + dy));
myimage.setLayoutParams(p);
myimage.setFocusableInTouchMode(false);
}
break;
case MotionEvent.ACTION_UP:
float dX = event.getX() - startPoint.x;
float dY = event.getY() - startPoint.y;
int defaultX= ((ScreenX-width)/2)+myimage.getLeft();
int defaultY= ((ScreenY-height)/2)+myimage.getTop();
if (dX !=0 || dY !=0) {
trans = new TranslateAnimation(dX, 0, dY, defaultY+dY);
trans.setDuration(100);
myimage.startAnimation(trans);
myimage.setFocusable(false);
myimage.setFocusableInTouchMode(false);
}
case MotionEvent.ACTION_POINTER_UP:
mode = 0;
break;
}
return true;
}
} |