Android 拖拽操作demo
来源:互联网 发布:2017最流行网络用语 编辑:程序博客网 时间:2024/06/05 10:47
记录一下Android 拖拽的小demo
官网(https://developer.android.com/guide/topics/ui/drag-drop.html)对拖拽的说明已经很详细了,可以在官网对它了解。
自己实现了一下将拖拽后的阴影 改变成自定义的小图片,当拖拽时影藏了View。
直接上代码:
package com.example.myapplication;import android.app.Activity;import android.content.ClipData;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.drawable.Drawable;import android.os.Build;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.annotation.RequiresApi;import android.util.Log;import android.view.DragEvent;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.FrameLayout;import android.widget.TextView;/** * 拖拽操作 */public class TestDrogActivity extends Activity { private static final String TAG = "TestDrogActivity"; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); FrameLayout container = new FrameLayout(this); final TextView textView = new TextView(this); textView.setBackgroundColor(Color.CYAN); textView.setText("test drag"); textView.setTextSize(20); FrameLayout.LayoutParams flk = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); flk.gravity = Gravity.CENTER; container.addView(textView,flk); textView.setOnLongClickListener(new View.OnLongClickListener() { @RequiresApi(api = Build.VERSION_CODES.N) @Override public boolean onLongClick(View v) { textView.startDragAndDrop(null,new MyDrogBuild(v),v,0); return true; } }); textView.setOnDragListener(new View.OnDragListener() { @Override public boolean onDrag(View v, DragEvent event) { int action = event.getAction(); switch (action){ case DragEvent.ACTION_DRAG_STARTED: v.invalidate(); Log.d(TAG,"ACTION_DRAG_STARTED..."); return true; case DragEvent.ACTION_DROP: v.invalidate(); Log.d(TAG,"ACTION_DROP..."); return true; case DragEvent.ACTION_DRAG_ENDED: Log.d(TAG,"ACTION_DRAG_ENDED..."); v.invalidate(); return true; case DragEvent.ACTION_DRAG_ENTERED: Log.d(TAG,"ACTION_DRAG_ENTERED..."); v.invalidate(); return true; case DragEvent.ACTION_DRAG_EXITED: Log.d(TAG,"ACTION_DRAG_EXITED..."); v.invalidate(); return true; case DragEvent.ACTION_DRAG_LOCATION: Log.d(TAG,"ACTION_DRAG_LOCATION..."); v.invalidate(); return true; } return true; } }); setContentView(container,new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } private class MyDrogBuild extends View.DragShadowBuilder{ public MyDrogBuild(View v){ super(v); } @Override public void onDrawShadow(Canvas canvas) { //当长安拖拽时,改变阴影view 为自定义小图片 Bitmap bitmap = BitmapFactory.decodeResource( TestDrogActivity.this.getResources(),R.mipmap.ic_launcher); canvas.drawBitmap(bitmap,0,0,null);// super.onDrawShadow(canvas); } }}
阅读全文
0 0
- Android 拖拽操作demo
- android数据库操作demo
- android数据库操作的demo
- Android 屏幕旋转操作Demo
- Android AsyncTask 异步操作Demo
- Android~AsyncTask异步操作DEMO学习解析
- Android demo-->界面无操作超时处理
- Android串口操作,简化android-serialport-api的demo
- Android串口操作,简化android-serialport-api的demo
- Android串口操作,简化android-serialport-api的demo
- Android串口操作,简化android-serialport-api的demo
- Android下对Cookie的读写操作(附Demo)
- Android WebView与JavaScript交互操作(Demo)
- Android下对Cookie的读写操作(附Demo)
- [Android开发] RxJava2之路十三-阻塞操作例子Demo
- android文件操作——读写文件demo
- android demo
- android demo
- Turn Task 转弯
- 面试官筛选简历,注重以下几点
- java发送短信验证码
- Java类的初始化过程
- Linux系统下PORT端口引脚导出GPIO对应的序号关系
- Android 拖拽操作demo
- gradle配置升级
- python模块学习(threading模块中的Lock类和RLock类)
- php支付宝开发之pc网站支付接入
- ActiveMq--01
- centos7修改网卡名称、网卡双网卡绑定
- knockout click点击事件及事件源解释
- 数学笔记18——定积分的应用3(均值、权重、概率)
- JavaScript prototype 属性