1.使用RecyclerView
從策劃到設計制作,每一步都追求做到細膩,制作可持續(xù)發(fā)展的企業(yè)網站。為客戶提供成都網站設計、網站制作、網站策劃、網頁設計、申請域名、虛擬空間、網絡營銷、VI設計、 網站改版、漏洞修補等服務。為客戶提供更好的一站式互聯(lián)網解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進步。
使用RecyclerView可以輕松實現(xiàn)圖片切換時的動畫過程,這點要好于GridView。
2. 拖拽的實現(xiàn)
Dragmanager
繼承View.OnDragListener,對拖拽過程中進行操作,
Action_drag_started 獲取到操作的Item
Action_Drag_location 根據(jù)每個停留的位置判斷是否交換item的位置。
Action_Drag_ended 跟新位置
DragSortAdapter
抽象類,為recyclerView 增加onItemTouchListener和onScrollListener, 記錄onTouch的item,并在拖拽過程中判斷recyclerview是否可以滾動,從而在拖拽的item快到邊界時滾動recyclerView,使可以與本來在屏幕上不可見的item進行交換位置。
ViewHolder
ViewHolder 實現(xiàn)startDrag方法
2.itemDecoration
為recyclerview item增加divider,可以有兩種方式,覆蓋onDraw方法繪制itemDivider,或者覆蓋getItemOffsets方法,使item之間可以分隔開。
3.GridlayoutManager
當recyclerview嵌入到scrollview中時,需要復寫LayoutManager,在這里復寫其中的onMeasure方法,需要計算每個item的高度或者寬度進行疊加,當recyclerview中item很多時,不要采用這種方式,回導致view不能復用,其中在計算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"); }
網站名稱:android實現(xiàn)圖片選擇拖拽控件
分享鏈接:http://m.rwnh.cn/article20/ippejo.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供建站公司、網站導航、小程序開發(fā)、關鍵詞優(yōu)化、網站建設、搜索引擎優(yōu)化
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)