2025-02-10

首先歡迎大傢訪問我的獨立博客與我進行交流。
最近做瞭個新聞閱讀器,基本上類似網易新聞,雖然在市場下載量很少,但是還是有些方面值得肯定的。下面我就分幾篇來講述下該閱讀器的制作,稍後我會把源碼放出來。

先上幾幅圖看看效果。

 device-2011-09-14-141859.jpgdevice-2011-09-14-141931.jpg

程序的主要部分是列表頁部分和文章顯示頁部分,列表頁有拖動更新功能和分頁功能,用以顯示所有的文章列表,文章顯示部分具有離線悅讀、圖片異步加載等功能,看上去很簡單的兩個頁面其實有很多附加功能。

現在按順序來講述編碼流程。

首先,進入程序前會有個splash,splash有多種功能,可以用於告訴用戶一些關於應用程序的信息,也可以用來進行手機環境的檢測,比如網絡、存儲卡等的檢測,還可以進行數據庫以及部分數據的初始化等等。


 1 public class CiSplash extends Activity{
 2    
 3     // timer
 4     Timer timer = null;
 5    
 6     // start time
 7     long startTime = 0;
 8    
 9     // is or not touched
10     Boolean _active = true;
11    
12     @Override
13     protected void onCreate(Bundle savedInstanceState) {
14         // TODO Auto-generated method stub
15         super.onCreate(savedInstanceState);   
16         requestWindowFeature(Window.FEATURE_NO_TITLE);
17         setContentView(R.layout.splash);
18
19         // set the timer
20         startTime = System.currentTimeMillis();
21         setTimer();       
22     }
23
24     private final TimerTask task = new TimerTask() {
25         @Override
26         public void run() {
27             // after 2 seconds or screen has been touched, send a message
28             if (task.scheduledExecutionTime() – startTime >= 2000
29                 || !_active) {
30                 Message message = new Message();
31                 message.what = 1;
32                 timerHandler.sendMessage(message);
33                 timer.cancel();
34                 this.cancel();
35             }
36         }
37     };
38    
39     private final Handler timerHandler = new Handler() {
40         @Override
41         public void handleMessage(Message msg) {
42             // skip the splash
43             if (msg.what == 1) {    
44                 if(ApplicationEx.isSDCardMounted() &&
45                     !ApplicationEx.isSDCardMountedReadOnly()){
46                     Intent intent = new Intent(CiSplash.this,
47                                 CiReader.class);
48                     CiSplash.this.finish();
49                     startActivity(intent);
50                 }else{
51                     Tools.displayMsg(CiSplash.this, "請插入存儲卡");
52                     CiSplash.this.finish();   
53                 }
54             }
55             super.handleMessage(msg);  
56         }
57     };
58    
59     // set the task executed per 0.2 seconds
60     public void setTimer(){
61         timer = new Timer(true);
62         timer.schedule(task, 0, 200);
63     }
64
65     // when screen has been touched
66     @Override
67     public boolean onTouchEvent(MotionEvent event) {
68         if (event.getAction() == MotionEvent.ACTION_DOWN) {
69             _active = false;
70         }
71         return true;
72     }
73    
74
75 }
76

我這裡展示瞭一張splash圖,圖中展示瞭應用程序的大概內容,除此之外Activity中還有一個功能就是檢測存儲卡,由於該閱讀器需要sdcard來作為離線存儲的空間,因此在沒有sdcard的情況下會提示用戶,當然這裡也有不人性化的地方,就是這裡自動退出瞭,其實沒有sdcard用戶也還是可以在線閱讀的,這裡沒做處理。
另外這裡splash的跳過除瞭等待2秒外,用戶還可以通過觸碰界面直接跳過splash,代碼很簡單,相信大傢能看得懂。

這裡就講到這兒,下面一講主要論述列表頁的制作。

 

作者“風之子的博客”

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *