1.使用RecyclerView
創(chuàng)新互聯專業(yè)成都網站建設、成都網站設計,集網站策劃、網站設計、網站制作于一體,網站seo、網站優(yōu)化、網站營銷、軟文發(fā)稿等專業(yè)人才根據搜索規(guī)律編程設計,讓網站在運行后,在搜索中有好的表現,專業(yè)設計制作為您帶來效益的網站!讓網站建設為您創(chuàng)造效益。使用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的源碼發(fā)現,無法直接獲取到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"); }
另外有需要云服務器可以了解下創(chuàng)新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。