亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android 實現圖片選擇拖拽控件

發布時間:2020-08-01 11:01:00 來源:網絡 閱讀:769 作者:wutongkege 欄目:移動開發

1.使用RecyclerView

使用RecyclerView可以輕松實現圖片切換時的動畫過程,這點要好于GridView。

2. 拖拽的實現

  • Dragmanager

繼承View.OnDragListener,對拖拽過程中進行操作,

Action_drag_started 獲取到操作的Item

Action_Drag_location 根據每個停留的位置判斷是否交換item的位置。

Action_Drag_ended 跟新位置

  • DragSortAdapter

抽象類,為recyclerView 增加onItemTouchListener和onScrollListener, 記錄onTouch的item,并在拖拽過程中判斷recyclerview是否可以滾動,從而在拖拽的item快到邊界時滾動recyclerView,使可以與本來在屏幕上不可見的item進行交換位置。

  • ViewHolder

ViewHolder 實現startDrag方法


2.itemDecoration


為recyclerview item增加divider,可以有兩種方式,覆蓋onDraw方法繪制itemDivider,或者覆蓋getItemOffsets方法,使item之間可以分隔開。

3.GridlayoutManager

當recyclerview嵌入到scrollview中時,需要復寫LayoutManager,在這里復寫其中的onMeasure方法,需要計算每個item的高度或者寬度進行疊加,當recyclerview中item很多時,不要采用這種方式,回導致view不能復用,其中在計算item高度時,需要加上每個item的itemOffsets,查看recyclerview的源碼發現,無法直接獲取到item的offsets,最終采用反射的方式獲取到其值:

try {
    Method method = recyclerView.getClass().getDeclaredMethod("getItemDecorInsetsForChild",View.class);
    method.setAccessible(true);
    final Rect insets = (Rect)method.invoke(recyclerView, child);
    itemDecorationHeight = heightUsed + insets.height();
    itemDecorationWidth = widthUsed + insets.width();
} catch (NoSuchMethodException e){
    Log.d("FullGridLayoutManager","no method found");
}catch(IllegalAccessException e){
    Log.d("FullGridLayoutManager","IllegalAccessException");
}catch (InvocationTargetException e){
    Log.d("FullGridLayoutManager","InvocationTargetException");
}



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

化德县| 开封市| 黄陵县| 分宜县| 南昌市| 木兰县| 南开区| 井研县| 颍上县| 江华| 神农架林区| 邻水| 望江县| 旬邑县| 开原市| 扶风县| 电白县| 景谷| 万安县| 黄冈市| 迁西县| 莱芜市| 巴南区| 左贡县| 定结县| 通江县| 澄江县| 惠州市| 南丰县| 镇沅| 湟中县| 韩城市| 兴宁市| 淳安县| 库伦旗| 页游| 临桂县| 洮南市| 鸡西市| 甘德县| 镇江市|