Android控制項:高仿主UI,android高仿微
高仿主UI
之前在Android組件:Fragment切換後儲存狀態 一文中講到了Fragment切換後,是如何儲存原來的狀態的,最重要的就是用add方法取代現在各種教程常見的replace方法。然而我發現有不少App都貌似採用ViewPager + Fragment來做主UI的。於是在Android組件:Fragment切換後儲存狀態 的基礎上加入了ViewPager,看了下介面,要高仿就儘力模仿到最像,所以也把ActionBar也修改成的樣子。
先上一張:
布局
我知道這個主UI肯定沒我想得那麼簡單,而實現上面這個效果用了四個主要的元素。
1.ActionBar
這一塊還是蠻簡單的,就是在res/menu,寫一個menu.xml檔案就OK了。需要注意的是:如果手機又實體菜單按鍵的,最常見就是三星啦,可以調用一個方法來讓Menu顯示在ActionBar上。
private void getOverflowMenu() { try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class .getDeclaredField("sHasPermanentMenuKey"); if (menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception e) { e.printStackTrace(); } }
另外也要注意一下版本之間的問題,例如高版本的Activity就不必繼承ActionBarActivity了。
2.Fragment
這一塊視乎不是重點,大家如果不熟悉Fragment可以參考我之前寫的兩篇關於Fragment的文章 - -
3.ViewPager
我們知道ViewPager的使用步驟是:
但是,我們要載入的是Fragment,這該怎麼辦呢?其實更加簡單,我們只需要把Adapter改為繼承FragmentPagerAdapter
就可以了
private class MyPagerAdapter extends FragmentPagerAdapter { public MyPagerAdapter(FragmentManager fm) { super(fm); // TODO Auto-generated constructor stub } @Override public Fragment getItem(int arg0) { // TODO Auto-generated method stub return list.get(arg0); } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } }
其中的List元素,由View變成了Fragment..
4.Button
這個Button的使用比第一篇還要簡單,因為我們只需要這樣就可以了:
public void onClick(View arg0) { switch (arg0.getId()) { ... case R.id.tongxunlu_layout: viewPager.setCurrentItem(1, true); break; ... } }
總結
FragmentPagerAdapter
貌似不能起到切換後自動儲存狀態的作用,但可以在Fragment裡面來操作,來達到這個功能吧。
CSDN下載源碼