您的位置:首页 > 移动开发 > 微信开发

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

2016-10-27 09:50 435 查看
Android ViewPager+RadioGroup+Fragment超高仿微信6.0底部滑动菜单,可通过左右滑动或点击底部RadioButton切换Fragment。

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

效果图:



MainActivity.Java

[java] view
plain copy

 





package com.example.administrator.wechat.activity;  

  

import android.os.Bundle;  

import android.support.v4.app.Fragment;  

import android.support.v4.app.FragmentActivity;  

import android.support.v4.view.ViewPager;  

import android.widget.RadioButton;  

import android.widget.RadioGroup;  

  

import com.example.administrator.wechat.R;  

import com.example.administrator.wechat.adapter.MyFragmentPagerAdapter;  

import com.example.administrator.wechat.fragment.ContactsFragment;  

import com.example.administrator.wechat.fragment.DiscoveryFragment;  

import com.example.administrator.wechat.fragment.MeFragment;  

import com.example.administrator.wechat.fragment.ChatFragment;  

  

import java.util.ArrayList;  

import java.util.List;  

  

  

public class MainActivity extends FragmentActivity {  

    private ViewPager viewPager;  

    private RadioGroup radioGroup;  

    private RadioButton rbChat, rbContacts, rbDiscovery, rbMe;  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_main);  

  

        initView();  

    }  

  

    private void initView() {  

        /** 

         * RadioGroup部分 

         */  

        radioGroup = (RadioGroup) findViewById(R.id.radioGroup);  

        rbChat = (RadioButton) findViewById(R.id.rb_chat);  

        rbContacts = (RadioButton) findViewById(R.id.rb_contacts);  

        rbDiscovery = (RadioButton) findViewById(R.id.rb_discovery);  

        rbMe = (RadioButton) findViewById(R.id.rb_me);  

        //RadioGroup选中状态改变监听  

        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {  

            @Override  

            public void onCheckedChanged(RadioGroup group, int checkedId) {  

                switch (checkedId) {  

                    case R.id.rb_chat:  

                        /** 

                         * setCurrentItem第二个参数控制页面切换动画 

                         * true:打开/false:关闭 

                         */  

                        viewPager.setCurrentItem(0, false);  

                        break;  

                    case R.id.rb_contacts:  

                        viewPager.setCurrentItem(1, false);  

                        break;  

                    case R.id.rb_discovery:  

                        viewPager.setCurrentItem(2, false);  

                        break;  

                    case R.id.rb_me:  

                        viewPager.setCurrentItem(3, false);  

                        break;  

                }  

            }  

        });  

  

        /** 

         * ViewPager部分 

         */  

        viewPager = (ViewPager) findViewById(R.id.viewPager);  

        ChatFragment weChatFragment = new ChatFragment();  

        ContactsFragment contactsFragment = new ContactsFragment();  

        DiscoveryFragment discoveryFragment = new DiscoveryFragment();  

        MeFragment meFragment = new MeFragment();  

        List<Fragment> alFragment = new ArrayList<Fragment>();  

        alFragment.add(weChatFragment);  

        alFragment.add(contactsFragment);  

        alFragment.add(discoveryFragment);  

        alFragment.add(meFragment);  

        //ViewPager设置适配器  

        viewPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), alFragment));  

        //ViewPager显示第一个Fragment  

        viewPager.setCurrentItem(0);  

        //ViewPager页面切换监听  

        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {  

            @Override  

            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {  

  

            }  

  

            @Override  

            public void onPageSelected(int position) {  

                switch (position) {  

                    case 0:  

                        radioGroup.check(R.id.rb_chat);  

                        break;  

                    case 1:  

                        radioGroup.check(R.id.rb_contacts);  

                        break;  

                    case 2:  

                        radioGroup.check(R.id.rb_discovery);  

                        break;  

                    case 3:  

                        radioGroup.check(R.id.rb_me);  

                        break;  

                }  

            }  

  

            @Override  

            public void onPageScrollStateChanged(int state) {  

  

            }  

        });  

    }  

}  

activity_main.xml

[html] view
plain copy

 





<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  

    android:layout_width="match_parent"  

    android:layout_height="match_parent">  

  

    <RadioGroup  

        android:id="@+id/radioGroup"  

        android:layout_width="match_parent"  

        android:layout_height="55dp"  

        android:layout_alignParentBottom="true"  

        android:background="@color/white"  

        android:orientation="horizontal">  

  

        <RadioButton  

            android:id="@+id/rb_chat"  

            android:checked="true"  

            android:text="@string/chat"  

            android:drawableTop="@drawable/rb_chat_selector"  

            style="@style/style_RadioButton"/>  

  

        <RadioButton  

            android:id="@+id/rb_contacts"  

            android:text="@string/contacts"  

            android:drawableTop="@drawable/rb_contacts_selector"  

            style="@style/style_RadioButton"/>  

  

        <RadioButton  

            android:id="@+id/rb_discovery"  

            android:text="@string/discovery"  

            android:drawableTop="@drawable/rb_discovery_selector"  

            style="@style/style_RadioButton"/>  

  

        <RadioButton  

            android:id="@+id/rb_me"  

            android:text="@string/me"  

            android:drawableTop="@drawable/rb_me_selector"  

            style="@style/style_RadioButton"/>  

    </RadioGroup>  

  

    <android.support.v4.view.ViewPager  

        android:id="@+id/viewPager"  

        android:layout_width="match_parent"  

        android:layout_height="match_parent"  

        android:layout_above="@id/radioGroup" />  

</RelativeLayout>  

MyFragmentPagerAdapter

[java] view
plain copy

 





package com.example.administrator.wechat.adapter;  

  

import android.support.v4.app.Fragment;  

import android.support.v4.app.FragmentManager;  

import android.support.v4.app.FragmentPagerAdapter;  

  

import java.util.List;  

  

/** 

 * Created by Administrator on 2015/6/24. 

 */  

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {  

    private List<Fragment> list;  

  

    public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {  

        super(fm);  

        this.list = list;  

    }  

  

    @Override  

    public Fragment getItem(int position) {  

        return list.get(position);  

    }  

  

    @Override  

    public int getCount() {  

        return list.size();  

    }  

}  

style.xml

[html] view
plain copy

 





<resources>  

  

    <!-- Base application theme. -->  

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">  

        <!-- Customize your theme here. -->  

        <item name="android:colorPrimary">@color/green</item>  

    </style>  

  

    <style name="style_RadioButton">  

        <item name="android:layout_width">match_parent</item>  

        <item name="android:layout_height">wrap_content</item>  

        <item name="android:button">@null</item> 
//去除RadioButton前面的圆点 

        <item name="android:background">@null</item>  

        <item name="android:layout_weight">1</item>  

        <item name="android:gravity">center</item>  

        <item name="android:layout_gravity">center</item>  

        <item name="android:textColor">@drawable/rb_focus_color</item>  

        <item name="android:textSize">12sp</item>  

    </style>  

  

</resources>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: