zoukankan      html  css  js  c++  java
  • 66、多种多样的App主界面Tab(1)------ ViewPager实现Tab

      1 <?xml version="1.0" encoding="utf-8"?>
      2 <!-- bottom.xml -->
      3 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      4     android:layout_width="match_parent"
      5     android:layout_height="55dp"
      6     android:background="@drawable/bottom_bar"
      7     android:orientation="horizontal" >
      9     <LinearLayout
     10         android:id="@+id/id_tab_weixin"
     11         android:layout_width="0dp"
     12         android:layout_height="fill_parent"
     13         android:layout_weight="1"
     14         android:gravity="center"
     15         android:orientation="vertical" >
     17         <ImageButton
     18             android:id="@+id/id_tab_weixin_img"
     19             android:layout_width="wrap_content"
     20             android:layout_height="wrap_content"
     21             android:background="#00000000"
     22             android:clickable="false"
     23             android:src="@drawable/tab_weixin_pressed" />
     25         <TextView
     26             android:layout_width="wrap_content"
     27             android:layout_height="wrap_content"
     28             android:text="微信"
     29             android:textColor="#ffffff" />
     30     </LinearLayout>
     31 
     32     <LinearLayout
     33         android:id="@+id/id_tab_frd"
     34         android:layout_width="0dp"
     35         android:layout_height="fill_parent"
     36         android:layout_weight="1"
     37         android:gravity="center"
     38         android:orientation="vertical" >
     40         <ImageButton
     41             android:id="@+id/id_tab_frd_img"
     42             android:layout_width="wrap_content"
     43             android:layout_height="wrap_content"
     44             android:background="#00000000"
     45             android:clickable="false"
     46             android:src="@drawable/tab_find_frd_normal" />
     48         <TextView
     49             android:layout_width="wrap_content"
     50             android:layout_height="wrap_content"
     51             android:text="朋友"
     52             android:textColor="#ffffff" />
     53     </LinearLayout>
     54 
     55     <LinearLayout
     56         android:id="@+id/id_tab_address"
     57         android:layout_width="0dp"
     58         android:layout_height="fill_parent"
     59         android:layout_weight="1"
     60         android:gravity="center"
     61         android:orientation="vertical" >
     63         <ImageButton
     64             android:id="@+id/id_tab_address_img"
     65             android:layout_width="wrap_content"
     66             android:layout_height="wrap_content"
     67             android:background="#00000000"
     68             android:clickable="false"
     69             android:src="@drawable/tab_address_normal" />
     71         <TextView
     72             android:layout_width="wrap_content"
     73             android:layout_height="wrap_content"
     74             android:text="通讯录"
     75             android:textColor="#ffffff" />
     76     </LinearLayout>
     77 
     78     <LinearLayout
     79         android:id="@+id/id_tab_settings"
     80         android:layout_width="0dp"
     81         android:layout_height="fill_parent"
     82         android:layout_weight="1"
     83         android:gravity="center"
     84         android:orientation="vertical" >
     86         <ImageButton
     87             android:id="@+id/id_tab_settings_img"
     88             android:layout_width="wrap_content"
     89             android:layout_height="wrap_content"
     90             android:background="#00000000"
     91             android:clickable="false"
     92             android:src="@drawable/tab_settings_normal" />
     94         <TextView
     95             android:layout_width="wrap_content"
     96             android:layout_height="wrap_content"
     97             android:text="设置"
     98             android:textColor="#ffffff" />
     99     </LinearLayout>
    100 
    101 </LinearLayout>
     1 <LinearLayout 
     2     xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:tools="http://schemas.android.com/tools"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:orientation="vertical" >
    10     <android.support.v4.view.ViewPager
    11         android:id="@+id/id_viewpager"
    12         android:layout_width="fill_parent"
    13         android:layout_height="0dp"
    14         android:layout_weight="1" />
    16     <include layout="@layout/bottom" />
    18 </LinearLayout>
      1 package com.imooc.tab01;
      2 
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 
      6 import android.app.Activity;
      7 import android.os.Bundle;
      8 import android.support.v4.view.PagerAdapter;
      9 import android.support.v4.view.ViewPager;
     10 import android.support.v4.view.ViewPager.OnPageChangeListener;
     11 import android.view.LayoutInflater;
     12 import android.view.View;
     13 import android.view.View.OnClickListener;
     14 import android.view.ViewGroup;
     15 import android.view.Window;
     16 import android.widget.ImageButton;
     17 import android.widget.LinearLayout;
     18 
     19 public class MainActivity extends Activity implements OnClickListener {
     20 
     21     private ViewPager mViewPager;
     22     private PagerAdapter mAdapter;
     23     private List<View> mViews = new ArrayList<View>();
     24     // TAB
     25     private LinearLayout mTabWeixin;
     26     private LinearLayout mTabFrd;
     27     private LinearLayout mTabAddress;
     28     private LinearLayout mTabSetting;
     29 
     30     private ImageButton mWeixinImg;
     31     private ImageButton mFrdImg;
     32     private ImageButton mAddressImg;
     33     private ImageButton mSettingImg;
     34 
     35     @Override
     36     protected void onCreate(Bundle savedInstanceState) {
     37         super.onCreate(savedInstanceState);
     38         requestWindowFeature(Window.FEATURE_NO_TITLE);
     39         setContentView(R.layout.activity_main);
     40 
     41         initView();
     42 
     43         initEvents();
     44     }
     45     
     46     private void initView() {
     47         mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
     48         // tabs
     49         mTabWeixin = (LinearLayout) findViewById(R.id.id_tab_weixin);
     50         mTabFrd = (LinearLayout) findViewById(R.id.id_tab_frd);
     51         mTabAddress = (LinearLayout) findViewById(R.id.id_tab_address);
     52         mTabSetting = (LinearLayout) findViewById(R.id.id_tab_settings);
     53         // ImageButton
     54         mWeixinImg = (ImageButton) findViewById(R.id.id_tab_weixin_img);
     55         mFrdImg = (ImageButton) findViewById(R.id.id_tab_frd_img);
     56         mAddressImg = (ImageButton) findViewById(R.id.id_tab_address_img);
     57         mSettingImg = (ImageButton) findViewById(R.id.id_tab_settings_img);
     58 
     59         LayoutInflater mInflater = LayoutInflater.from(this);
     60         View tab01 = mInflater.inflate(R.layout.tab01, null);
     61         View tab02 = mInflater.inflate(R.layout.tab02, null);
     62         View tab03 = mInflater.inflate(R.layout.tab03, null);
     63         View tab04 = mInflater.inflate(R.layout.tab04, null);
     64         mViews.add(tab01);
     65         mViews.add(tab02);
     66         mViews.add(tab03);
     67         mViews.add(tab04);
     68 
     69         mAdapter = new PagerAdapter() {
     70 
     71             @Override
     72             public void destroyItem(ViewGroup container, int position,
     73                     Object object) {
     74                 container.removeView(mViews.get(position));
     75             }
     76 
     77             @Override
     78             public Object instantiateItem(ViewGroup container, int position) {
     79                 View view = mViews.get(position);
     80                 container.addView(view);
     81                 return view;
     82             }
     83 
     84             @Override
     85             public boolean isViewFromObject(View arg0, Object arg1) {
     86                 return arg0 == arg1;
     87             }
     88 
     89             @Override
     90             public int getCount() {
     91                 return mViews.size();
     92             }
     93         };
     94 
     95         mViewPager.setAdapter(mAdapter);
     96     }
     97 
     98     private void initEvents() {
     99         mTabWeixin.setOnClickListener(this);
    100         mTabFrd.setOnClickListener(this);
    101         mTabAddress.setOnClickListener(this);
    102         mTabSetting.setOnClickListener(this);
    103 
    104         mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
    105 
    106             @Override
    107             public void onPageSelected(int arg0) {
    108                 int currentItem = mViewPager.getCurrentItem();
    109                 resetImg();   // 将所有的图片切换为暗色的
    110                 
    111                 switch (currentItem) {
    112                 case 0:
    113                     mWeixinImg.setImageResource(R.drawable.tab_weixin_pressed);
    114                     break;
    115                 case 1:
    116                     mFrdImg.setImageResource(R.drawable.tab_find_frd_pressed);
    117                     break;
    118                 case 2:
    119                     mAddressImg
    120                             .setImageResource(R.drawable.tab_address_pressed);
    121                     break;
    122                 case 3:
    123                     mSettingImg
    124                             .setImageResource(R.drawable.tab_settings_pressed);
    125                     break;
    126                 }
    127             }
    128 
    129             @Override
    130             public void onPageScrolled(int arg0, float arg1, int arg2) { }
    131 
    132             @Override
    133             public void onPageScrollStateChanged(int arg0) { }
    134         });
    135     }
    136 
    137     @Override
    138     public void onClick(View v) {
    139         resetImg();  // 将所有的图片切换为暗色的
    140         
    141         switch (v.getId()) {
    142         case R.id.id_tab_weixin:
    143             mViewPager.setCurrentItem(0);
    144             mWeixinImg.setImageResource(R.drawable.tab_weixin_pressed);
    145             break;
    146         case R.id.id_tab_frd:
    147             mViewPager.setCurrentItem(1);
    148             mFrdImg.setImageResource(R.drawable.tab_find_frd_pressed);
    149             break;
    150         case R.id.id_tab_address:
    151             mViewPager.setCurrentItem(2);
    152             mAddressImg.setImageResource(R.drawable.tab_address_pressed);
    153             break;
    154         case R.id.id_tab_settings:
    155             mViewPager.setCurrentItem(3);
    156             mSettingImg.setImageResource(R.drawable.tab_settings_pressed);
    157             break;
    158 
    159         default:
    160             break;
    161         }
    162     }
    163 
    164     /**
    165      * 将所有的图片切换为暗色的
    166      */
    167     private void resetImg() {
    168         mWeixinImg.setImageResource(R.drawable.tab_weixin_normal);
    169         mFrdImg.setImageResource(R.drawable.tab_find_frd_normal);
    170         mAddressImg.setImageResource(R.drawable.tab_address_normal);
    171         mSettingImg.setImageResource(R.drawable.tab_settings_normal);
    172     }
    173 
    174 }

    完整DEMO下载地址:http://download.csdn.net/detail/androidsj/9354277

  • 相关阅读:
    快逸报表调用存储过程(SqlServer)
    一个睡五分钟等于六个钟头的方法 (转)
    Windows Live Writer For Windows Server 2003
    设计模式装饰者模式
    SqlServerCUBE
    Android 70道面试题汇总不再愁面试
    说服力:让你的PPT会说话
    亮剑Java项目开发案例导航
    初入社会必知的88个潜规则
    android UI进阶之仿iphone的tab效果2
  • 原文地址:https://www.cnblogs.com/androidsj/p/5045314.html
Copyright © 2011-2022 走看看