Android ViewPager+RadioGroup+Fragment超高仿微信主界面

来源:互联网 发布:ucloud云计算 校园 编辑:程序博客网 时间:2024/04/28 15:33

Android ViewPager+RadioGroup+Fragment超高仿微信6.0底部滑动菜单,可通过左右滑动或点击底部RadioButton切换Fragment。

下载源码地址:http://download.csdn.net/download/shenyuanqing/9428333

效果图:


MainActivity.java

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. package com.example.administrator.wechat.activity;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.v4.app.Fragment;  
  5. import android.support.v4.app.FragmentActivity;  
  6. import android.support.v4.view.ViewPager;  
  7. import android.widget.RadioButton;  
  8. import android.widget.RadioGroup;  
  9.   
  10. import com.example.administrator.wechat.R;  
  11. import com.example.administrator.wechat.adapter.MyFragmentPagerAdapter;  
  12. import com.example.administrator.wechat.fragment.ContactsFragment;  
  13. import com.example.administrator.wechat.fragment.DiscoveryFragment;  
  14. import com.example.administrator.wechat.fragment.MeFragment;  
  15. import com.example.administrator.wechat.fragment.ChatFragment;  
  16.   
  17. import java.util.ArrayList;  
  18. import java.util.List;  
  19.   
  20.   
  21. public class MainActivity extends FragmentActivity {  
  22.     private ViewPager viewPager;  
  23.     private RadioGroup radioGroup;  
  24.     private RadioButton rbChat, rbContacts, rbDiscovery, rbMe;  
  25.   
  26.     @Override  
  27.     protected void onCreate(Bundle savedInstanceState) {  
  28.         super.onCreate(savedInstanceState);  
  29.         setContentView(R.layout.activity_main);  
  30.   
  31.         initView();  
  32.     }  
  33.   
  34.     private void initView() {  
  35.         /** 
  36.          * RadioGroup部分 
  37.          */  
  38.         radioGroup = (RadioGroup) findViewById(R.id.radioGroup);  
  39.         rbChat = (RadioButton) findViewById(R.id.rb_chat);  
  40.         rbContacts = (RadioButton) findViewById(R.id.rb_contacts);  
  41.         rbDiscovery = (RadioButton) findViewById(R.id.rb_discovery);  
  42.         rbMe = (RadioButton) findViewById(R.id.rb_me);  
  43.         //RadioGroup选中状态改变监听  
  44.         radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {  
  45.             @Override  
  46.             public void onCheckedChanged(RadioGroup group, int checkedId) {  
  47.                 switch (checkedId) {  
  48.                     case R.id.rb_chat:  
  49.                         /** 
  50.                          * setCurrentItem第二个参数控制页面切换动画 
  51.                          * true:打开/false:关闭 
  52.                          */  
  53.                         viewPager.setCurrentItem(0false);  
  54.                         break;  
  55.                     case R.id.rb_contacts:  
  56.                         viewPager.setCurrentItem(1false);  
  57.                         break;  
  58.                     case R.id.rb_discovery:  
  59.                         viewPager.setCurrentItem(2false);  
  60.                         break;  
  61.                     case R.id.rb_me:  
  62.                         viewPager.setCurrentItem(3false);  
  63.                         break;  
  64.                 }  
  65.             }  
  66.         });  
  67.   
  68.         /** 
  69.          * ViewPager部分 
  70.          */  
  71.         viewPager = (ViewPager) findViewById(R.id.viewPager);  
  72.         ChatFragment weChatFragment = new ChatFragment();  
  73.         ContactsFragment contactsFragment = new ContactsFragment();  
  74.         DiscoveryFragment discoveryFragment = new DiscoveryFragment();  
  75.         MeFragment meFragment = new MeFragment();  
  76.         List<Fragment> alFragment = new ArrayList<Fragment>();  
  77.         alFragment.add(weChatFragment);  
  78.         alFragment.add(contactsFragment);  
  79.         alFragment.add(discoveryFragment);  
  80.         alFragment.add(meFragment);  
  81.         //ViewPager设置适配器  
  82.         viewPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), alFragment));  
  83.         //ViewPager显示第一个Fragment  
  84.         viewPager.setCurrentItem(0);  
  85.         //ViewPager页面切换监听  
  86.         viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {  
  87.             @Override  
  88.             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {  
  89.   
  90.             }  
  91.   
  92.             @Override  
  93.             public void onPageSelected(int position) {  
  94.                 switch (position) {  
  95.                     case 0:  
  96.                         radioGroup.check(R.id.rb_chat);  
  97.                         break;  
  98.                     case 1:  
  99.                         radioGroup.check(R.id.rb_contacts);  
  100.                         break;  
  101.                     case 2:  
  102.                         radioGroup.check(R.id.rb_discovery);  
  103.                         break;  
  104.                     case 3:  
  105.                         radioGroup.check(R.id.rb_me);  
  106.                         break;  
  107.                 }  
  108.             }  
  109.   
  110.             @Override  
  111.             public void onPageScrollStateChanged(int state) {  
  112.   
  113.             }  
  114.         });  
  115.     }  
  116. }  

activity_main.xml

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="match_parent">  
  4.   
  5.     <RadioGroup  
  6.         android:id="@+id/radioGroup"  
  7.         android:layout_width="match_parent"  
  8.         android:layout_height="55dp"  
  9.         android:layout_alignParentBottom="true"  
  10.         android:background="@color/white"  
  11.         android:orientation="horizontal">  
  12.   
  13.         <RadioButton  
  14.             android:id="@+id/rb_chat"  
  15.             android:checked="true"  
  16.             android:text="@string/chat"  
  17.             android:drawableTop="@drawable/rb_chat_selector"  
  18.             style="@style/style_RadioButton"/>  
  19.   
  20.         <RadioButton  
  21.             android:id="@+id/rb_contacts"  
  22.             android:text="@string/contacts"  
  23.             android:drawableTop="@drawable/rb_contacts_selector"  
  24.             style="@style/style_RadioButton"/>  
  25.   
  26.         <RadioButton  
  27.             android:id="@+id/rb_discovery"  
  28.             android:text="@string/discovery"  
  29.             android:drawableTop="@drawable/rb_discovery_selector"  
  30.             style="@style/style_RadioButton"/>  
  31.   
  32.         <RadioButton  
  33.             android:id="@+id/rb_me"  
  34.             android:text="@string/me"  
  35.             android:drawableTop="@drawable/rb_me_selector"  
  36.             style="@style/style_RadioButton"/>  
  37.     </RadioGroup>  
  38.   
  39.     <android.support.v4.view.ViewPager  
  40.         android:id="@+id/viewPager"  
  41.         android:layout_width="match_parent"  
  42.         android:layout_height="match_parent"  
  43.         android:layout_above="@id/radioGroup" />  
  44. </RelativeLayout>  

MyFragmentPagerAdapter

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. package com.example.administrator.wechat.adapter;  
  2.   
  3. import android.support.v4.app.Fragment;  
  4. import android.support.v4.app.FragmentManager;  
  5. import android.support.v4.app.FragmentPagerAdapter;  
  6.   
  7. import java.util.List;  
  8.   
  9. /** 
  10.  * Created by Administrator on 2015/6/24. 
  11.  */  
  12. public class MyFragmentPagerAdapter extends FragmentPagerAdapter {  
  13.     private List<Fragment> list;  
  14.   
  15.     public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {  
  16.         super(fm);  
  17.         this.list = list;  
  18.     }  
  19.   
  20.     @Override  
  21.     public Fragment getItem(int position) {  
  22.         return list.get(position);  
  23.     }  
  24.   
  25.     @Override  
  26.     public int getCount() {  
  27.         return list.size();  
  28.     }  
  29. }  
style.xml
[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. <resources>  
  2.   
  3.     <!-- Base application theme. -->  
  4.     <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">  
  5.         <!-- Customize your theme here. -->  
  6.         <item name="android:colorPrimary">@color/green</item>  
  7.     </style>  
  8.   
  9.     <style name="style_RadioButton">  
  10.         <item name="android:layout_width">match_parent</item>  
  11.         <item name="android:layout_height">wrap_content</item>  
  12.         <item name="android:button">@null</item>  
  13.         <item name="android:background">@null</item>  
  14.         <item name="android:layout_weight">1</item>  
  15.         <item name="android:gravity">center</item>  
  16.         <item name="android:layout_gravity">center</item>  
  17.         <item name="android:textColor">@drawable/rb_focus_color</item>  
  18.         <item name="android:textSize">12sp</item>  
  19.     </style>  
  20.   
  21. </resources> 
0 0
原创粉丝点击