91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

宝兴县| 鄂托克前旗| 南部县| 四平市| 隆尧县| 南投市| 当雄县| 阿巴嘎旗| 南雄市| 永年县| 田阳县| 乌拉特后旗| 同德县| 阿尔山市| 大竹县| 拜城县| 龙胜| 卢龙县| 杭锦旗| 铁岭市| 青田县| 惠安县| 福州市| 定南县| 松原市| 乌拉特前旗| 怀来县| 青铜峡市| 治多县| 涟源市| 岢岚县| 曲松县| 南乐县| 甘洛县| 钟祥市| 定陶县| 金秀| 卫辉市| 渭源县| 龙口市| 谢通门县|