Android自定义组件(一)

 Android自定义组件(二)

 
4)创建布局
         注意xmlns:join声明的命名空间,和格式为:
         xmlns:空间名="http://schemas.android.com/apk/res/自定义组件所在包名"
 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     xmlns:join="http://schemas.android.com/apk/res/org.join.effect.widget" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     android:orientation="vertical" > 
  7.  
  8.     <org.join.effect.widget.tpager.TitleViewPager 
  9.         android:id="@+id/titleViewPager1" 
  10.         android:layout_width="fill_parent" 
  11.         android:layout_height="fill_parent" 
  12.         android:layout_alignParentTop="true" 
  13.         android:layout_centerHorizontal="true" 
  14.         android:layout_weight="1" 
  15.         join:bImage="@drawable/icon" 
  16.         join:tLayout="@layout/title" > 
  17.     </org.join.effect.widget.tpager.TitleViewPager> 
  18.  
  19.     <org.join.effect.widget.tpager.TitleViewPager 
  20.         android:id="@+id/titleViewPager2" 
  21.         android:layout_width="fill_parent" 
  22.         android:layout_height="fill_parent" 
  23.         android:layout_alignParentTop="true" 
  24.         android:layout_centerHorizontal="true" 
  25.         android:layout_weight="1" 
  26.         join:tLayout="@layout/title" > 
  27.     </org.join.effect.widget.tpager.TitleViewPager> 
  28.  
  29. </LinearLayout> 
 
5)样例活动


  1. public class TitleViewPagerActivity extends Activity implements 
  2.         OnPageChangeListener { 
  3.  
  4.     private TitleViewPager titleViewPager1, titleViewPager2; 
  5.  
  6.     @Override 
  7.     protected void onCreate(Bundle savedInstanceState) { 
  8.         super.onCreate(savedInstanceState); 
  9.         setContentView(R.layout.mpager); 
  10.  
  11.         // 获得TitleViewPager1组件 
  12.         titleViewPager1 = (TitleViewPager) findViewById(R.id.titleViewPager1); 
  13.         /* 增加其绑定页面 */ 
  14.         titleViewPager1.addBindedPage(R.layout.page1, R.id.item1); 
  15.         titleViewPager1.addBindedPage(R.layout.page2, R.id.item2); 
  16.         titleViewPager1.addBindedPage(R.layout.page3, R.id.item3); 
  17.         // 获得TitleViewPager2组件 
  18.         titleViewPager2 = (TitleViewPager) findViewById(R.id.titleViewPager2); 
  19.         /* 增加其绑定页面 */ 
  20.         titleViewPager2.addBindedPage(R.layout.page1, R.id.item1); 
  21.         titleViewPager2.addBindedPage(R.layout.page2, R.id.item2); 
  22.         titleViewPager2.addBindedPage(R.layout.page3, R.id.item3); 
  23.         // 设置页面变化监听事件 
  24.         titleViewPager2.setOnPageChangeListener(this); 
  25.     } 
  26.  
  27.     // Called when the current Window of the activity gains or loses focus. 
  28.     @Override 
  29.     public void onWindowFocusChanged(boolean hasFocus) { 
  30.         super.onWindowFocusChanged(hasFocus); 
  31.         if (hasFocus) { 
  32.             // UI加载完成后的初始化操作 
  33.             titleViewPager1.setPage(1); 
  34.             titleViewPager2.setPage(1); 
  35.         } 
  36.     } 
  37.  
  38.     @Override 
  39.     public void onPageScrolled(int position, float positionOffset, 
  40.             int positionOffsetPixels) { 
  41.     } 
  42.  
  43.     @Override 
  44.     public void onPageSelected(int position) { 
  45.         ArrayList<View> mItemViews = titleViewPager2.getItemViews(); 
  46.         for (View item : mItemViews) { 
  47.             item.setBackgroundColor(Color.TRANSPARENT); // 设为透明背景 
  48.         } 
  49.         mItemViews.get(position).setBackgroundColor(Color.BLUE); // 设为蓝色背景 
  50.     } 
  51.  
  52.     @Override 
  53.     public void onPageScrollStateChanged(int state) { 
  54.     } 
  55.  
 
三、截图
1 主界面

主界面

2 ViewPager绑定标题

主界面

3 ListView加抽屉

主界面

4 隐藏更多标题

主界面

5 实时动态数据线

实时动态数据线

 
四、后记
         这个工程里的这些组件效果,使用时仍有许多不足之处。总之,是引子,欢迎用上这些样例小组件~