android 实现可拖动的Button
2010-12-29 17:46
302 查看
DraftTest.java
main.xml
package com.cn.lhq;import android.app.Activity;import android.os.Bundle;import android.util.DisplayMetrics;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.Button;import android.widget.Toast;public class DraftTest extends Activity {@Overridepublic 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 btn = (Button) findViewById(R.id.btn);btn.setOnTouchListener(new OnTouchListener() {int lastX, lastY;@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubint ea = event.getAction();Log.i("TAG", "Touch:" + ea);switch (ea) {case MotionEvent.ACTION_DOWN:lastX = (int) event.getRawX();// 获取触摸事件触摸位置的原始X坐标lastY = (int) event.getRawY();break;case MotionEvent.ACTION_MOVE:int dx = (int) event.getRawX() - lastX;int dy = (int) event.getRawY() - lastY;int l = v.getLeft() + dx;int b = v.getBottom() + dy;int r = v.getRight() + dx;int t = v.getTop() + dy;// 下面判断移动是否超出屏幕if (l < 0) {l = 0;r = l + v.getWidth();}if (t < 0) {t = 0;b = t + v.getHeight();}if (r > screenWidth) {r = screenWidth;l = r - v.getWidth();}if (b > screenHeight) {b = screenHeight;t = b - v.getHeight();}v.layout(l, t, r, b);lastX = (int) event.getRawX();lastY = (int) event.getRawY();Toast.makeText(DraftTest.this,"当前位置:" + l + "," + t + "," + r + "," + b,Toast.LENGTH_SHORT).show();v.postInvalidate();break;case MotionEvent.ACTION_UP:break;}return false;}});}}
main.xml
<?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:text="推动" android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content"/></LinearLayout>
相关文章推荐
- Android开发圆角button的简单实现
- Android 贝赛尔曲线实现自定义button 果冻-压下形变,抬起后弹弹的效果
- (Android学习之路)Android中listView结合自定义适配器,并实现item中button点击事件
- Android实现圆角Button按钮
- Android 自己定义ImageView实现圆角/圆形 附加OnTouchListener具体凝视以及Button圆角
- Android实现对imageview的拖动以及缩放
- android两种方式中自己画一个圆,实现单点触控时拖动图片,跟着拖动点走,并且可以放大或缩小
- Android中用BaseAdapter实现带Button和显示网络图片的Listview
- android 可拖动的button(转载)
- Android自己定义button实现长按功能
- Android实现自定义带文字和图片的Button
- 【Android】利用自定义View的重绘实现拖动移动,获取组件的尺寸
- android之ImageButton实现选中改变背景,外加(图片自动适配组件大小)
- android按钮拖动Button 在up事件中做弹出菜单调用(通过判断坐标解决事件冲突问题)
- Android点击Button实现功能的几种方法
- Android之UI--重绘EditText以及实现Button的渐变色
- Android小demo,两个button,控制多个输入框实现值自增自减。
- android 实现左右拖动的网页焦点图
- Android下图片或按钮等可拖动到任意位置的效果实现源码
- Android开发之Button事件实现方法的总结