组件拖动显示
2013-12-24 11:52
183 查看
这里可以像悬浮显示可拖动的歌词栏
一样自定义组件重写onTouchEvent方法然后再重写onDraw方法来绘制,也可以在activity中重写onTouch事件,比较简单,代码如下:
MainActivity:
一样自定义组件重写onTouchEvent方法然后再重写onDraw方法来绘制,也可以在activity中重写onTouch事件,比较简单,代码如下:
MainActivity:
package com.home.drafttest; 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 MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取屏幕宽高 DisplayMetrics dm = getResources().getDisplayMetrics(); final int screenWidth = dm.widthPixels; final int screenHeight = dm.heightPixels - 50; final Button btn = (Button) findViewById(R.id.main_btn); btn.setOnTouchListener(new OnTouchListener() { // 组件位置 int lastX, lastY; @Override public boolean onTouch(View v, MotionEvent event) { int ea = event.getAction(); switch (ea) { 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; } }); } }
相关文章推荐
- layer前端组件实现图片显示功能
- android在根布局组件设置背景不显示的问题解决
- VS2010 Chart图表组件 显示 和 错误问题
- 从写JTextPane组件 实现关键字高亮显示
- android之实现SeekBar拖动组件
- Table 组件使用指南:使用CheckBox组件保存和显示Boolean类型字段
- Android中使用GridView分页显示系统所安装的应用,支持拖动与手势滑动
- 微信小程序image组件binderror使用例子(对应html、js中的onerror) ,图片失效显示默认图片
- Delphi开发ASP COM组件显示图片
- (学)DEV在设计界面部分组件显示红叉并报错的问题
- 可视区域(Scroller)或者又叫滚动显示组件区域
- ListView拖动时不显示黑色背景
- 组件居中显示 安卓
- [转]Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件
- wpf在窗口的控件拖动、点击窗口中控件显示在最上面以及控件拖动不超过窗口边界
- delphi7/2006中导入ocx控件常常不能显示在组件栏中的解决办法
- 安装office 2007 后 安装vs 2008 显示web组件有问题
- C# Tabcontrol组件怎么(切换)显示Form窗体
- 客户端出错:无法在数据表视图中显示该列表: 没有安装与 Windows SharePoint Services 兼容的数据表组件
- 用JavaScript在网页中显示可拖动月历