Android版簡歷(二)

涉及技術

Pager控件、Menu使用、短信電話調用

第一步:創建菜單

上篇文章我們已經創建好瞭主界面,但是僅僅隻展示這麼一點信息是完全不夠的吸引面試官的,所以我們得繼續加一些需求。
如果我們成功的讓HR或者面試官安裝瞭這個程序,那麼我們得讓他除瞭能看我們的信息之外,還能有其他更方便的功能,這個時候我就想到瞭加一個直接給咱發短信和打電話的功能。我決定將這兩個功能加到我們主界面的菜單中。
首先復寫onCreateOptionsMenu和onOptionsItemSelected。在onCreateOptionsMenu中,我們創建菜單項;在onOptionsItemSelected中,我們處理每個菜單項點擊的事件。這是創建菜單項的代碼:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 1, 1, "電話聯系我");
        menu.add(0, 2, 2, "短信通知我");
        return super.onCreateOptionsMenu(menu);
    }

這是處理點擊事件的代碼:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId() == 1) {
            //電話聯系
            
        } else if(item.getItemId() == 2) {
            //短信通知
            
        }
        return true;
    }

接下來我們就可以集中處理業務瞭。
關於Intent,大傢應該都很熟瞭,用Intent可以很簡單跳轉Activity,啟動Service等,我們都是使用的Intent的 public Intent (Context packageContext, Class cls) 這個構造方法,Intent的另一個構造方法也很實用:public Intent (String action, Uri uri) 。它允許我們傳入一個動作地址和一個數據URI來執行一個操作,Intent中有很多系統定義好瞭的動作地址,其中就包括瞭我們要用的發送短信和打電話的動作地址,具體可以看看這裡。
直接來看看我們打電話的例子:

 //電話聯系
 Intent intent = new Intent(Intent.ACTION_CALL, Uri
         .parse("tel:"+ MY_PHONE_NUMBER));
 startActivity(intent);

很簡單的代碼,Intent.ACTION_CALL表示的是調用打電話的程序,同時我們傳入一個表示數據的Uri,關於這個Uri的格式,在文檔中的Input有說,也就是tel: 接上電話號碼,這樣的格式。再看發短信的例子:

 //短信通知
 Uri uri = Uri.parse("smsto:"+ MY_PHONE_NUMBER);
 Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
 intent.putExtra("sms_body", "你好,謝景揚同學。");
 startActivity(intent);

我們使用瞭Intent.ACTION_SENDTO,傳遞一個smsto: 接上電話號碼,就可以實現發短信給某人,同理,emailto:接郵箱地址就可以發送郵件。同時,我們還要給短信添加內容,添加的方式如代碼所示,這裡你也可以更自信的寫:“你好,謝景揚同學,恭喜你已經通過瞭我們公司的面試。”
我們創建好的菜單就是下面的樣子,還有發短信的界面:

第二步:頭像點擊

我們的圓形頭像照片之前做好瞭,在上一篇文章中已經加上瞭點擊的事件,但是還沒定義這個PhotoClickListener,這個類非常簡單,直接跳轉到我們要跳轉的類就可以,下一個類就取名為PagerActivity,這樣的話代碼如下:

    private class PhotoClickListener implements View.OnClickListener {
        @Override
        public void onClick(View view) {
            
            Intent i = new Intent(context, PagerActivity.class);
            startActivity(i);
        }
    }

到此,MainActivity就已經完成瞭,完整的代碼請看這裡。

第三步:設計PagerActivity

上一步已經定瞭點擊頭像後跳轉到的這個類的名字,接下來就創建它。我們先看看要達到的效果:

這個樣子的控件大傢應該見過很多次,這是在android 3.0時發佈的一個新控件,但是google還是為低版本的android發佈瞭一個兼容包,讓低版本的程序能夠使用這個控件,這個兼容包的名字是android-suppZ喎?/kf/ware/vc/” target=”_blank” class=”keylink”>vcnQtdjQuamFyoaMK09DBy9XiuPa85sjdsPyjrM7Sw8e63Mjd0te+zcTcubvKtc/W1eK49r/J0tTX89PSu6y2r8fQu7tWaWV3tcTQp7n7wcujrM7Sw8fQwr2o0ru49kFjdGl2aXR5sqLH0r+qyryyvL7Wo6yyvL7WyOfPwqO6CjxwcmUgY2xhc3M9″brush:java;”>

因為我們使用的是自定義控件,所以要寫全控件所在的包名。這裡我還定義瞭一個style,用於統一應用程序的背景,方便維護更改,style定義如下:

    
        #2F8FBF
    

這個時候我們還看不出效果,因為還沒有為ViewPager添加數據,ViewPager同樣是基於Adapter來處理數據的,它有一個特有的Adapter叫PagerAdapter,我們創建一個內部類繼承PagerAdapter,復寫該復寫的方法,如果你寫過ListView,那麼看到這些方法應該很容易上手,沒用過ListView也沒關系,看一次就明白這些方法的意思瞭。
首先我們得有兩個數據集,來存放用於切換的View和對應顯示的標題:

其中viewList添加的兩個變量是我們後面要設計的兩個View。現在就可以看看Adapter是怎麼創建的瞭:

    private class MyPagerAdapter extends PagerAdapter {
        @Override
        public int getCount() {
            return viewList.size();
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            //return super.instantiateItem(container, position);
            container.addView(viewList.get(position));
            return viewList.get(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            //super.destroyItem(container, position, object);
            container.removeView(viewList.get(position));
        }

        @Override
        public CharSequence getPageTitle(int position) {
            //return super.getPageTitle(position);
            return titleList.get(position);
        }

        @Override
        public boolean isViewFromObject(View view, Object o) {
            return view == o;
        }
    }

這段代碼要我解釋,我也說不出什麼,方法名稱已經很容易理解瞭,而且基本就是這個模式瞭,以後再寫個PagerAdapter估計也就是差不多的代碼,所以就不解釋瞭。

結尾

下一篇文章會設計PagerView中顯示的兩個View。
扯下淡,希望這個程序能激發大傢的想象力,多想出這樣的一些點子,做一些實用的小程序,分享出來。我也非常大傢給我提建議和意見,我都會接受的。
最後還是那句,程序已經托管到瞭Github,歡迎大傢去下載,如果你比較懶不想自己寫一個Android版本的簡歷,可以直接check下來,修改一下數據和照片就可以用瞭。

發佈留言