在安卓中使用DragViewHelper
来源:互联网 发布:人肉 知乎 编辑:程序博客网 时间:2024/06/04 19:33
在安卓的布局中,个人比较喜欢使用DrawerLayout,而在查看它的源码,可以看到其实安卓是运用ViewDragHelper来处理进行拖动处理。
package com.example.dragmessage;
import android.annotation.SuppressLint;
import android.content.Context;
import android.support.v4.widget.ViewDragHelper;
import android.support.v4.widget.ViewDragHelper.Callback;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
public class DragView extends LinearLayout {
/** * 视图拖动控件 * */ViewDragHelper drag;@SuppressLint("NewApi") public DragView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub init();}public DragView(Context context, AttributeSet attrs) { this(context, attrs,0); // TODO Auto-generated constructor stub}public DragView(Context context) { this(context,null); // TODO Auto-generated constructor stub}private void init() { // TODO Auto-generated method stub //对拖动控件进行初始化,传入父控件,回调函数 drag=ViewDragHelper.create(this, new Callback() { /**** * 控件是否可以捕捉 * */ @Override public boolean tryCaptureView(View arg0, int arg1) { // TODO Auto-generated method stub return true; } /**** * 控件位置发生改变 * */ @Override public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { // TODO Auto-generated method stub super.onViewPositionChanged(changedView, left, top, dx, dy); } /*** * 控件s水平位置发生改变 * */ @Override public int clampViewPositionHorizontal(View child, int left, int dx) { // TODO Auto-generated method stub return left; } /*** * 控件垂直位置发生改变 * */ @Override public int clampViewPositionVertical(View child, int top, int dy) { // TODO Auto-generated method stub return top; } });}@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub /*..将点击事件拦截交给dragview处理.*/ return drag.shouldInterceptTouchEvent(ev);}@Overridepublic boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub /*进行拖动事件*/ drag.processTouchEvent(event); return true;}
}
.xml
0 0
- 在安卓中使用DragViewHelper
- 解决DragViewHelper和RecyclerView滑动冲突
- 在安卓中使用echarts
- unity 在安卓中使用SQLite
- 在安卓中使用Bundle在Activity之间传递数据
- 在安卓中使用VideoView来播放视频
- 如何在安卓中使用线程池(ThreadPoolExecutor)
- 在安卓中使用正则表达式1
- 在安卓中使用正则表达式2
- 在安卓中使用正则表达式3
- 在網頁中使用MediaPlayer
- JS 在哪使用
- 在frame使用panel
- 在中使用SQLDMO
- 在XSL使用数组
- 在silverlight 使用 IronPython
- 在PHP使用MemCached
- 谁在使用Qt
- Android相机实时自动对焦的完美实现
- Hive 临时表
- 《java入门第一季》正则表达式小案例
- lintcode----将整数A转换为B
- Oracle vm下安装多个linux网络相互之间不能ping通
- 在安卓中使用DragViewHelper
- 手机开发实战6——GSM区域定义
- js弹窗返回值详解(window.open方式)
- Android官方开发文档Training系列课程中文版:高效显示位图之管理位图内存
- 正确使用Qt多线程
- 运行线程
- 【CodeForces】[66B]Petya and Countryside
- 虚拟机VMware-workstation-full-10.0.3-1895310 官方下载
- 模板方法设计模式