Android下图片或按钮等可拖动到任意位置的效果实现源码
2012-12-12 16:47
736 查看
from: http://my.oschina.net/castusz/blog/66338
下面是activity的代码:
配置文件activity_draft_test.xml的内容:
下面是activity的代码:
public class DraftTest extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_draft_test); DisplayMetrics dm = getResources().getDisplayMetrics(); final int screenWidth = dm.widthPixels; final int screenHeight = dm.heightPixels - 50; // 拖动的按钮 final Button b = (Button) findViewById(R.id.startBtn); // 添加触摸事件 b.setOnTouchListener(new OnTouchListener() { int lastX, lastY; // 记录移动的最后的位置 public boolean onTouch(View v, MotionEvent event) { // 获取Action int ea = event.getAction(); Log.i("TAG", "Touch:" + ea); switch (ea) { case MotionEvent.ACTION_DOWN: // 按下 lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; /** * layout(l,t,r,b) l Left position, relative to parent t Top * position, relative to parent r Right position, relative to * parent b Bottom position, relative to parent * */ 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); Log.i("aaa", "position:" + left + ", " + top + ", " + right + ", " + bottom); // 将当前的位置再次设置 lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; case MotionEvent.ACTION_UP: // 脱离 break; } return false; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_draft_test, menu); return true; } }
配置文件activity_draft_test.xml的内容:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="0px" tools:context=".DraftTest" > <Button android:id="@+id/startBtn" android:text="tuodongdeanniu" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout>
相关文章推荐
- Android下图片或按钮等可拖动到任意位置的效果实现源码
- Android下图片或按钮等可拖动到任意位置的效果实现源码
- Android下图片可拖动到任意位置的效果的实现源码
- Android下图片可拖动到任意位置的效果的实现源码
- android实现按钮拖动效果及路径的绘制等2D绘图功能---待完善
- Android - ImageButton单击切换按钮图片效果的实现 .
- Android 图片实现按钮点击切换效果
- Android - ImageButton单击切换按钮图片效果的实现
- Android - ImageButton单击切换按钮图片效果的实现
- android UI 仿 win 8 模块化 标题,并实现 可长按拖动交换图片位置、可点击,且伴随动画特效
- Android - ImageButton单击切换按钮图片效果的实现
- Android中图片实现按钮点击效果
- Android实现图片拖动效果
- Android - ImageButton单击切换按钮图片效果的实现 .
- Android - ImageButton单击切换按钮图片效果的实现
- Android编程滑动效果之Gallery+GridView实现图片预览功能(附demo源码下载)
- android仿IOS按钮点击效果,一张图片实现
- Android - ImageButton单击切换按钮图片效果的实现
- Android 笔记:ImageButton单击切换按钮图片效果的实现(转)
- android图片按钮点击变灰变量效果实现(一张背景图实现效果)