首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

图片拖动成效

2012-09-25 
图片拖动效果拖拽图片效果方法一:??? import android.app.Activity? ??? import android.os.Bundle? ???

图片拖动效果

拖拽图片效果

方法一:

??? import android.app.Activity;?
??? import android.os.Bundle;?
??? import android.view.MotionEvent;?
??? import android.view.View;?
??? import android.view.View.OnTouchListener;?
??? import android.widget.ImageView;?
??? public class DragSample01 extends Activity {?
??????? ImageView img;?
??????? @Override?
??????? public void onCreate(Bundle savedInstanceState) {?
??????????? super.onCreate(savedInstanceState);?
??????????? setContentView(R.layout.drag_sample01);?????????
??????????? img = (ImageView)findViewById(R.id.img_view);?
?????????????
??????????? img.setOnTouchListener(new OnTouchListener(){????????????
??????????????? private int mx, my;??????????
??????????????? public boolean onTouch(View v, MotionEvent event) {?
??????????????????? switch(event.getAction()) {??????????????
??????????????????? case MotionEvent.ACTION_MOVE:?
??????????????????????? mx = (int)(event.getRawX());?
??????????????????????? my = (int)(event.getRawY() - 50);?
?????????????????????????
??????????????????????? v.layout(mx - img.getWidth()/2, my - img.getHeight()/2, mx + img.getWidth()/2, my + img.getHeight()/2);?
??????????????????????? break;?
??????????????????? }?
??????????????????? return true;?
??????????????? }});?
??????? }?
??? }?


方法二:

??? import android.app.Activity;?
??? import android.os.Bundle;?
??? import android.view.MotionEvent;?
??? import android.view.View;?
??? import android.view.View.OnTouchListener;?
??? import android.widget.ImageView;?
??? public class DragSample01 extends Activity {?
??????? ImageView img;?
??????? @Override?
??????? public void onCreate(Bundle savedInstanceState) {?
??????????? super.onCreate(savedInstanceState);?
??????????? setContentView(R.layout.drag_sample01);?????????
??????????? img = (ImageView)findViewById(R.id.img_view);?
?????????????
??????????? img.setOnTouchListener(new OnTouchListener(){????????????
??????????????? private float x, y;?
??????????????? private int mx, my;??????????
??????????????? public boolean onTouch(View v, MotionEvent event) {?
??????????????????? switch(event.getAction()) {??
??????????????????? case MotionEvent.ACTION_DOWN:?
??????????????????????? x = event.getX();?
??????????????????????? y = event.getY();?
??????????????????? case MotionEvent.ACTION_MOVE:?
??????????????????????? mx = (int)(event.getRawX() - x);?
??????????????????????? my = (int)(event.getRawY() - 50 - y);?
?????????????????????????
??????????????????????? v.layout(mx, my, mx + v.getWidth(), my + v.getHeight());?
??????????????????????? break;?
??????????????????? }?
??????????????????? return true;?
??????????????? }});?
??????? }?
??? }?

?

//////////------------------

?

拖拽图片效果

方法一:
??? import android.app.Activity;???
??? import android.os.Bundle;???
??? import android.view.MotionEvent;???
??? import android.view.View;???
??? import android.view.View.OnTouchListener;???
??? import android.widget.ImageView;???
??? public class DragSample01 extends Activity {???
??????? ImageView img;???
??????? @Override???
??????? public void onCreate(Bundle savedInstanceState) {???
??????????? super.onCreate(savedInstanceState);???
??????????? setContentView(R.layout.drag_sample01);???????????
??????????? img = (ImageView)findViewById(R.id.img_view);???
???????????????
??????????? img.setOnTouchListener(new OnTouchListener(){??????????????
??????????????? private int mx, my;????????????
??????????????? public boolean onTouch(View v, MotionEvent event) {???
??????????????????? switch(event.getAction()) {????????????????
??????????????????? case MotionEvent.ACTION_MOVE:???
??????????????????????? mx = (int)(event.getRawX());???
??????????????????????? my = (int)(event.getRawY() - 50);???
???????????????????????????
??????????????????????? v.layout(mx - img.getWidth()/2, my - img.getHeight()/2, mx + img.getWidth()/2, my + img.getHeight()/2);???
??????????????????????? break;???
??????????????????? }???
??????????????????? return true;???
??????????????? }});???
??????? }???
??? }???


方法二:

??? import android.app.Activity;???
??? import android.os.Bundle;???
??? import android.view.MotionEvent;???
??? import android.view.View;???
??? import android.view.View.OnTouchListener;???
??? import android.widget.ImageView;???
??? public class DragSample01 extends Activity {???
??????? ImageView img;???
??????? @Override???
??????? public void onCreate(Bundle savedInstanceState) {???
??????????? super.onCreate(savedInstanceState);???
??????????? setContentView(R.layout.drag_sample01);???????????
??????????? img = (ImageView)findViewById(R.id.img_view);???
???????????????
??????????? img.setOnTouchListener(new OnTouchListener(){??????????????
??????????????? private float x, y;???
??????????????? private int mx, my;????????????
??????????????? public boolean onTouch(View v, MotionEvent event) {???
??????????????????? switch(event.getAction()) {????
??????????????????? case MotionEvent.ACTION_DOWN:???
??????????????????????? x = event.getX();???
??????????????????????? y = event.getY();???
??????????????????? case MotionEvent.ACTION_MOVE:???
??????????????????????? mx = (int)(event.getRawX() - x);???
??????????????????????? my = (int)(event.getRawY() - 50 - y);???
???????????????????????????
??????????????????????? v.layout(mx, my, mx + v.getWidth(), my + v.getHeight());???
??????????????????????? break;???
??????????????????? }???
??????????????????? return true;???
??????????????? }});???
??????? }???
??? }???



拖动按钮到处跑
1. 布局文件

??? <?xml version="1.0" encoding="utf-8"?>?
??? <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"?
??? android:orientation="vertical" android:layout_width="fill_parent"?
??? android:layout_height="fill_parent">?
??? <Button android:id="@+id/btn" android:layout_width="fill_parent"?
??? android:layout_height="wrap_content" android:text="拖动看看~~" />?
??? </LinearLayout>?


2. 代码

??? import android.app.Activity;?
??? import android.os.Bundle;?
??? import android.util.DisplayMetrics;?
??? import android.view.MotionEvent;?
??? import android.view.View;?
??? import android.view.View.OnTouchListener;?
??? import android.widget.Button;?
?????
??? public class DraftTest extends Activity {?
??????? /** Called when the activity is first created. */?
??????? @Override?
??????? public void onCreate(Bundle savedInstanceState) {?
??????????? super.onCreate(savedInstanceState);?
??????????? setContentView(R.layout.main);?
?????
??????????? final Button btn = (Button) findViewById(R.id.btn);?
?????
??????????? btn.setOnTouchListener(new OnTouchListener() {?
??????????????? int[] temp = new int[] { 0, 0 };?
?????
??????????????? public boolean onTouch(View v, MotionEvent event) {?
?????
??????????????????? int eventaction = event.getAction();?
?????
??????????????????? int x = (int) event.getRawX();?
??????????????????? int y = (int) event.getRawY();?
?????
??????????????????? switch (eventaction) {?
?????
??????????????????? case MotionEvent.ACTION_DOWN: // touch down so check if the?
??????????????????????? temp[0] = (int) event.getX();?
??????????????????????? temp[1] = y - v.getTop();?
??????????????????????? break;?
?????
??????????????????? case MotionEvent.ACTION_MOVE: // touch drag with the ball?
??????????????????????? v.layout(x - temp[0], y - temp[1], x + v.getWidth()?
??????????????????????????????? - temp[0], y - temp[1] + v.getHeight());?
?????
??? //????????????????? v.postInvalidate();?
??????????????????????? break;?
?????
??????????????????? case MotionEvent.ACTION_UP:?
??????????????????????? break;?
??????????????????? }?
?????
??????????????????? return false;?
??????????????? }?
?????
??????????? });?
?????
??????? }?
??? }?



另一种:

??? import android.app.Activity;?
??? import android.os.Bundle;?
??? import android.util.DisplayMetrics;?
??? import android.view.MotionEvent;?
??? import android.view.View;?
??? import android.view.View.OnTouchListener;?
??? import android.widget.Button;?
?????
??? public class DraftTest extends Activity {?
??????? /** Called when the activity is first created. */?
?????
??????? public void onCreate(Bundle savedInstanceState) {?
??????????? super.onCreate(savedInstanceState);?
??????????? setContentView(R.layout.main);?
?????
??????????? DisplayMetrics dm = getResources().getDisplayMetrics();?
??????????? final int screenWidth = dm.widthPixels;?
??????????? final int screenHeight = dm.heightPixels - 50;?
?????
??????????? final Button b = (Button) findViewById(R.id.btn);?
?????
??????????? b.setOnTouchListener(new OnTouchListener() {?
?????
??????????????? int lastX, lastY;?
?????
??????????????? public boolean onTouch(View v, MotionEvent event) {?
??????????????????? // TODO Auto-generated method stub?
??????????????????? switch (event.getAction()) {?
??????????????????? case MotionEvent.ACTION_DOWN:?
??????????????????????? lastX = (int) event.getRawX();?
??????????????????????? lastY = (int) event.getRawY();?
??????????????????????? break;?
??????????????????? case MotionEvent.ACTION_MOVE:?
??????????????????????? int dx = (int) event.getRawX() - lastX;?
??????????????????????? int dy = (int) event.getRawY() - lastY;?
?????
??????????????????????? int left = v.getLeft() + dx;?
??????????????????????? int top = v.getTop() + dy;?
??????????????????????? int right = v.getRight() + dx;?
??????????????????????? int bottom = v.getBottom() + dy;?
?????
??????????????????????? if (left < 0) {?
??????????????????????????? left = 0;?
??????????????????????????? right = left + v.getWidth();?
??????????????????????? }?
?????
??????????????????????? if (right > screenWidth) {?
??????????????????????????? right = screenWidth;?
??????????????????????????? left = right - v.getWidth();?
??????????????????????? }?
?????
??????????????????????? if (top < 0) {?
??????????????????????????? top = 0;?
??????????????????????????? bottom = top + v.getHeight();?
??????????????????????? }?
?????
??????????????????????? if (bottom > screenHeight) {?
??????????????????????????? bottom = screenHeight;?
??????????????????????????? top = bottom - v.getHeight();?
??????????????????????? }?
?????
??????????????????????? v.layout(left, top, right, bottom);?
?????
??????????????????????? lastX = (int) event.getRawX();?
??????????????????????? lastY = (int) event.getRawY();?
?????
??????????????????????? break;?
??????????????????? case MotionEvent.ACTION_UP:?
??????????????????????? break;?
??????????????????? }?
??????????????????? return false;?
??????????????? }?
??????????? });?
??????? }?
??? }?

热点排行