android實(shí)現(xiàn)圖片選擇拖拽控件

1.使用RecyclerView

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、申請(qǐng)域名、虛擬空間、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

使用RecyclerView可以輕松實(shí)現(xiàn)圖片切換時(shí)的動(dòng)畫過(guò)程,這點(diǎn)要好于GridView。

2. 拖拽的實(shí)現(xiàn)

  • Dragmanager

繼承View.OnDragListener,對(duì)拖拽過(guò)程中進(jìn)行操作,

Action_drag_started 獲取到操作的Item

Action_Drag_location 根據(jù)每個(gè)停留的位置判斷是否交換item的位置。

Action_Drag_ended 跟新位置

  • DragSortAdapter

抽象類,為recyclerView 增加onItemTouchListener和onScrollListener, 記錄onTouch的item,并在拖拽過(guò)程中判斷recyclerview是否可以滾動(dòng),從而在拖拽的item快到邊界時(shí)滾動(dòng)recyclerView,使可以與本來(lái)在屏幕上不可見(jiàn)的item進(jìn)行交換位置。

  • ViewHolder

ViewHolder 實(shí)現(xiàn)startDrag方法

2.itemDecoration

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

3.GridlayoutManager

當(dāng)recyclerview嵌入到scrollview中時(shí),需要復(fù)寫LayoutManager,在這里復(fù)寫其中的onMeasure方法,需要計(jì)算每個(gè)item的高度或者寬度進(jìn)行疊加,當(dāng)recyclerview中item很多時(shí),不要采用這種方式,回導(dǎo)致view不能復(fù)用,其中在計(jì)算item高度時(shí),需要加上每個(gè)item的itemOffsets,查看recyclerview的源碼發(fā)現(xiàn),無(wú)法直接獲取到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");
}

網(wǎng)站名稱:android實(shí)現(xiàn)圖片選擇拖拽控件
分享鏈接:http://muchs.cn/article20/ippejo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站導(dǎo)航、小程序開發(fā)、關(guān)鍵詞優(yōu)化、網(wǎng)站建設(shè)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名