1.使用RecyclerView

使用RecyclerView可以輕松實現(xiàn)圖片切換時的動畫過程,這點要好于GridView。
2. 拖拽的實現(xiàn)
Dragmanager
繼承View.OnDragListener,對拖拽過程中進(jìn)行操作,
Action_drag_started 獲取到操作的Item
Action_Drag_location 根據(jù)每個停留的位置判斷是否交換item的位置。
Action_Drag_ended 跟新位置
DragSortAdapter
抽象類,為recyclerView 增加onItemTouchListener和onScrollListener, 記錄onTouch的item,并在拖拽過程中判斷recyclerview是否可以滾動,從而在拖拽的item快到邊界時滾動recyclerView,使可以與本來在屏幕上不可見的item進(jìn)行交換位置。
ViewHolder
ViewHolder 實現(xiàn)startDrag方法
2.itemDecoration
為recyclerview item增加divider,可以有兩種方式,覆蓋onDraw方法繪制itemDivider,或者覆蓋getItemOffsets方法,使item之間可以分隔開。
3.GridlayoutManager
當(dāng)recyclerview嵌入到scrollview中時,需要復(fù)寫LayoutManager,在這里復(fù)寫其中的onMeasure方法,需要計算每個item的高度或者寬度進(jìn)行疊加,當(dāng)recyclerview中item很多時,不要采用這種方式,回導(dǎo)致view不能復(fù)用,其中在計算item高度時,需要加上每個item的itemOffsets,查看recyclerview的源碼發(fā)現(xiàn),無法直接獲取到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ù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文名稱:android實現(xiàn)圖片選擇拖拽控件-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://www.chinadenli.net/article46/djdseg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站制作、自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、App設(shè)計、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容