日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android -- DragDrop

發布時間:2024/4/13 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android -- DragDrop 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android3.0提供了drag/drop框架,利用此框架可以實現使用拖放手勢將一個view拖放到當前布局中的另外一個view中。

實現拖放的步驟

首先,我們先了解一下拖放過程,從官方文檔可以知道,整個拖放過程共分為4個步驟,具體如下:

1、? Started:啟動拖放,主要是調用被拖放View的startDrag方法。此方法原型為:

public final boolean startDrag(ClipData data, View.DragShadowBuilder shadowBuilder, Object myLocalState, int flags)

啟動后,系統生成拖放陰影并發送action為ACTION_DRAG_STARTED的拖放事件到當前布局中已經設置了拖放監聽的View。

2、? Continuing:保持拖動狀態。在此過程中系統可能會發送一個或多個拖動事件給設置了拖放監聽器的View,比如ACTION_DRAG_ENTERED、ACTION_DRAG_LOCATION等。

3、? Dropped:用戶在目標區域內釋放拖動陰影,系統會向設置了拖放監聽器的View發送action為ACTION_DROP的事件。

4、? Ended:用戶釋放了拖動陰影,系統會向設置了拖放監聽器的View發送action為ACTION_DRAG_ENDED事件,完成拖放。

拖放過程中關鍵的接口和類

其次,我們要了解清楚拖放過程中的幾個關鍵的接口和類,主要有OnDragListener、DragEvent、DragShadowBuilder、ClipData、ClipDescription等。

1、OnDragListener:接口,拖放事件監聽器。當發生Drag時,回調此接口中的方法。接口中只含有一個方法onDrag,方法原型為:

boolean onDrag(View v, DragEvent event) //參數v:設置了監聽器的View //參數event:拖放事件的參數,封裝了拖放相關的數據 //返回值:true-事件已處理;false事件未處理。

2、DragEvent:拖放事件對象,根據action的不同,包含不同的事件數據。

3、DragShadowBuilder:拖放陰影構造者對象,用于構造拖放陰影。

4、ClipData、ClipDescription:用于拖放的移動數據。

code

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/topContainer"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageViewandroid:id="@+id/img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:contentDescription="@null"android:src="@drawable/ic_launcher" /><LinearLayoutandroid:id="@+id/container"android:layout_width="match_parent"android:layout_height="100dp"android:layout_alignParentBottom="true"android:orientation="vertical"android:background="#cccccc" ><TextViewandroid:id="@+id/title"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textColor="#ff0000"android:textSize="18sp" /></LinearLayout></RelativeLayout>

為ImageView綁定長點擊事件

imageView.setOnLongClickListener(new OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {//創建移動數據ClipData.Item item = new ClipData.Item((String) v.getTag());ClipData data = new ClipData(IMAGEVIEW_TAG,new String[] { ClipDescription.MIMETYPE_TEXT_PLAIN },item);//調用startDrag方法,第二個參數為創建拖放陰影v.startDrag(data, new View.DragShadowBuilder(v), null, 0);return true;}});

為目標View綁定拖拽監聽:

container.setOnDragListener(new OnDragListener() {@Overridepublic boolean onDrag(View v, DragEvent event) {final int action = event.getAction();switch (action) {case DragEvent.ACTION_DRAG_STARTED://拖拽開始事件if (event.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {return true;}return false;case DragEvent.ACTION_DRAG_ENTERED://被拖放View進入目標View container.setBackgroundColor(Color.YELLOW);return true;case DragEvent.ACTION_DRAG_LOCATION:return true;case DragEvent.ACTION_DRAG_EXITED://被拖放View離開目標View container.setBackgroundColor(Color.BLUE);title.setText("");return true;case DragEvent.ACTION_DROP://釋放拖放陰影,并獲取移動數據ClipData.Item item = event.getClipData().getItemAt(0);String dragData = item.getText().toString();title.setText(dragData+event.getY()+":"+event.getX());return true;case DragEvent.ACTION_DRAG_ENDED://拖放事件完成return true;default:break;}return false;}});

imageView的位置

topContainer.setOnDragListener(new OnDragListener() {@Overridepublic boolean onDrag(View v, DragEvent event) {final int action = event.getAction();switch (action) {case DragEvent.ACTION_DRAG_STARTED:return true;case DragEvent.ACTION_DRAG_ENTERED:return true;case DragEvent.ACTION_DRAG_LOCATION:return true;case DragEvent.ACTION_DRAG_EXITED:return true;case DragEvent.ACTION_DROP:imageView.setX(event.getX()-imageView.getWidth()/2);imageView.setY(event.getY()-imageView.getHeight()/2);return true;case DragEvent.ACTION_DRAG_ENDED:return true;default:break;}return false;}});

效果

我是天王蓋地虎的分割線

?

?

轉載:http://www.cnblogs.com/jerehedu/p/4427588.html

總結

以上是生活随笔為你收集整理的Android -- DragDrop的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲高清天堂 | 黄色大片在线播放 | 国产精品久久久久久久久久小说 | 国产农村妇女aaaaa视频 | 午夜嘿嘿嘿 | 亚洲欧美日韩一区二区 | 少女国产免费观看 | 国产粉嫩呻吟一区二区三区 | 国产欧美一区二区视频 | 久久中文字幕高清 | 国产成人精品久久 | 亚洲国产精品99久久久久久久久 | 先锋影音av资源在线观看 | 国产特黄级aaaaa片免 | 在线污视频 | 91国产一区| 日本成人久久 | 男人天堂社区 | 精品一区二区三区视频日产 | 色播日韩 | 人人舔人人爽 | 性欧美大战久久久久久久久 | 精品久久久久久久久久久久久 | 黄色资源网站 | 亚洲AV午夜成人片 | 仙踪林久久久久久久999 | 伊人久久香 | www日本xxx | 精品久久久久久久久久久久久久久 | 久久国产剧情 | av大全免费| 波多野结衣一区二区在线 | 欧美资源网 | 国产精品美女在线观看 | 精品www久久久久久奶水 | 国产黄色视屏 | 强制憋尿play黄文尿奴 | 欧美三级一级片 | 黑人与日本少妇高潮 | 性插插视频 | 成人激情片 | 黄色片网站免费看 | 久久精品国产亚洲a | 中文字幕久久熟女蜜桃 | 就操在线 | 污污av| 美女18网站 | 亚洲一区精品在线观看 | 成人在线观看网 | 一本久久a精品一合区久久久 | 欧美极品videos精品 | 亚洲黄色天堂 | 免费av一区 | 初高中福利视频网站 | 久久伊人网站 | 女性裸体不遮胸图片 | 国产一二三在线视频 | 日韩每日更新 | 亚洲午夜18毛片在线看 | 午夜激情四射 | 88国产精品视频一区二区三区 | 欧美黑人三级 | 精品欧美一区二区久久久 | www.成人av.com | 伊人青青久久 | 天天干,天天操 | 1024香蕉视频 | 91爱爱com| 欧美香蕉在线 | 国产福利免费 | 久久最新精品 | 捆绑无遮挡打光屁股 | 亚洲大尺度网站 | 综合久久综合久久 | 性色在线视频 | 国产污视频在线看 | 国产成人免费片在线观看 | 日韩欧美一区二区三区在线 | 黄色中文 | 成人午夜视频免费在线观看 | 国产精品久久久久久人 | 日韩在线视频你懂的 | 成人免费看片视频 | 国产一区二区三区在线看 | 成人性色生活片 | 亚洲av无码一区二区三区人妖 | 91丨porny丨在线中文 | 色婷婷国产精品久久包臀 | 国产小视频在线 | 久久久久亚洲av无码麻豆 | 中国农村一级片 | 亚洲三级网站 | 狠狠鲁视频| 男人操女人网站 | 岛国av在线| 国产精品99无码一区二区视频 | 999一区二区三区 | jizz日本少妇 | www.欧美在线观看 |