源碼簡介

本例子實現的功能是很多新聞閱讀器(網易,今日頭條,360新聞等)以及騰訊視頻等里面都會出現的頻道管理功能,點擊可以增刪頻道,長按拖拽排序。下面的效果圖沒有拖拽的時候的移動動畫,DEMO里面有,可以下載看看
實現思路:
1. 獲取數據庫中頻道的列表,如果為空,賦予默認列表,并存入數據庫,之后通過對應的適配器賦給對應的GridView
2. 2個GridView–(1.DragGrid 2. OtherGridView)
DragGrid 用于顯示我的頻道,帶有長按拖拽效果
OtherGridView用于顯示更多頻道,不帶推拽效果
注:由于屏幕大小不一定,外層使用ScrollView,所以2者都要重寫計算高度
3. 點擊2個GridView的時候,根據點擊的Item對應的position,獲取position對應的view,進行創建一層移動的動畫層
起始位置:點擊的positiongetLocationInWindow()獲取。終點位置:另一個GridView的最后個ITEM 的position + 1的位置。
并賦予移動動畫,等動畫結束后對2者對應的頻道列表進行數據的remove和add操作。
4. 設置點擊和拖動的限制條件,如 推薦 這個ITEM是不允許用戶操作的。
5. 拖動的DragGrid的操作:
(1)長按獲取長按的ITEM的position — dragPosition 以及對應的view ,手指觸摸屏幕的時候,調用onInterceptTouchEvent來獲取MotionEvent.ACTION_DOWN事件,獲取對應的數據。由于這里是繼承了GridView,所以長按時間可以通過setOnItemLongClickListener監聽來執行,或則你也可以通過計算點擊時間來監聽是否長按。
(2)通過onTouchEvent(MotionEvent ev)來監聽手指的移動和抬起動作。當它移動到 其它的item下面,并且下方的item對應的position 不等于 dragPosition,進行數據交換,并且2者之間的所有item進行移動動畫,動畫結束后,數據更替刷新界面。
(3) 抬起手后,清除掉拖動時候創建的view,讓GridView中的數據顯示。
6. 退出時候,將改變后的頻道列表存入數據庫。
Android例子源碼仿網易360新聞等新聞閱讀器頻道管理 Android例子源碼仿網易360新聞等新聞閱讀器頻道管理 Android例子源碼仿網易360新聞等新聞閱讀器頻道管理

文件夾 PATH 列表
卷序列號為 66137F51 3CD2:D088
C:.
│  javaapk.com文件列表生成工具.bat
│  JavaApk源碼說明.txt
│  目錄列表.txt
│  
└─TopNewGrid
    │  .classpath
    │  .project
    │  AndroidManifest.xml
    │  ic_launcher-web.png
    │  proguard-project.txt
    │  project.properties
    │  
    ├─.settings
    │      org.eclipse.jdt.core.prefs
    │      
    ├─assets
    │              
    ├─gen
    │  └─com
    │      └─example
    │          └─topnewgrid
    │                  BuildConfig.java
    │                  R.java
    │                  
    ├─libs
    │      android-support-v4.jar
    │      
    ├─res
    │  ├─color
    │  │      btn_common_text.xml
    │  │      subscribe_item_text_color.xml
    │  │      
    │  ├─drawable
    │  │      bg_titlebar.xml
    │  │      btn_back.xml
    │  │      btn_common.xml
    │  │      subscribe_item_bg.xml
    │  │      subscribe_item_text_color_night.xml
    │  │      
    │  ├─drawable-hdpi
    │  │      ic_launcher.png
    │  │      
    │  ├─drawable-ldpi
    │  ├─drawable-mdpi
    │  │      ic_launcher.png
    │  │      
    │  ├─drawable-nodpi
    │  │      transparent.9.png
    │  │      
    │  ├─drawable-xhdpi
    │  │      btn_back_normal.png
    │  │      btn_back_pressed.png
    │  │      btn_common_disabled.9.png
    │  │      btn_common_normal.9.png
    │  │      btn_common_pressed.9.png
    │  │      channel_new.png
    │  │      ic_launcher.png
    │  │      
    │  ├─drawable-xxhdpi
    │  │      ic_launcher.png
    │  │      
    │  ├─layout
    │  │      subscribe_activity.xml
    │  │      subscribe_category_item.xml
    │  │      title_bar.xml
    │  │      
    │  ├─menu
    │  │      main.xml
    │  │      
    │  ├─values
    │  │      colors.xml
    │  │      dimens.xml
    │  │      strings.xml
    │  │      styles.xml
    │  │      
    │  ├─values-sw600dp
    │  │      dimens.xml
    │  │      
    │  ├─values-sw720dp-land
    │  │      dimens.xml
    │  │      
    │  ├─values-v11
    │  │      styles.xml
    │  │      
    │  └─values-v14
    │          styles.xml
    │          
    └─src
        └─com
            └─example
                └─topnewgrid
                    │  ChannelActivity.java
                    │  
                    ├─adapter
                    │      DragAdapter.java
                    │      OtherAdapter.java
                    │      
                    ├─app
                    │      AppApplication.java
                    │      
                    ├─bean
                    │      ChannelItem.java
                    │      ChannelManage.java
                    │      
                    ├─dao
                    │      ChannelDao.java
                    │      ChannelDaoInface.java
                    │      
                    ├─db
                    │      DBUtil.java
                    │      SQLHelper.java
                    │      
                    ├─tools
                    │      DataTools.java
                    │      
                    └─view
                            DragGrid.java
                            OtherGridView.java
                            

12條源碼討論
發表評論

您必須登錄才能評論.

10# frankie2011 2016-08-18 下午6:01

下載的project能在AS跑么?我這里出現了bug

9# kn0527 2016-03-20 上午12:16

完美O(∩_∩)O

    frankie2011 2016-08-18 下午6:01

    下載的project能在AS跑么?我這里出現了bug

8# kn0527 2016-03-20 上午12:16

謝謝

7# 2012juhua 2015-05-22 下午2:12

學習學習

6# Andyliao 2015-01-20 上午10:37

很不錯的學習資料 正好用的上

5# demonstay 2014-09-23 上午10:50

不錯,感謝

4# zt1991616 2014-06-20 下午3:08

正好用得著

地板 [email protected] 2014-05-18 下午12:10

支持,非常感謝

板凳 yezihengok 2014-05-16 上午10:17

非常不錯,注釋很詳細,感謝分享。

    frankie2011 2016-08-18 下午6:03

    我下載下來再AS跑出現了bug—-java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.topnewgrid/com.example.topnewgrid.ChannelActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class android.widget.TextView—-這是什么原因呢?求解

沙發 yezihengok 2014-05-16 上午10:04

下載看看拖動效果

?2013-2019 JavaApk.com· 魯ICP備13032311號-1· Powered by WordPress· Theme by JavaApkTM · 網站地圖.22 queries in 0.082 seconds


竟彩足球比分直播