Android ViewPager+RadioGroup+Fragment超高仿微信主界面
2016-11-10 17:55
567 查看
Android ViewPager+RadioGroup+Fragment超高仿微信6.0底部滑动菜单,可通过左右滑动或点击底部RadioButton切换Fragment。
下载源码地址:http://download.csdn.net/download/shenyuanqing/9428333
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/10/b85c0fcf434e9791021f028325ed89be)
MainActivity.java
[java]
view plain
copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
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
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
<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
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
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
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
<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>
<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>
下载源码地址:http://download.csdn.net/download/shenyuanqing/9428333
效果图:
MainActivity.java
[java]
view plain
copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
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
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
<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
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
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
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
<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>
<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>
相关文章推荐
- Android ViewPager+RadioGroup+Fragment超高仿微信主界面
- Android ViewPager+RadioGroup+Fragment超高仿微信主界面
- 使用ViewPager+Fragment+RadioGroup实现类似微信主界面
- android首次安装时进入wizard否则主界面Viewpager+Fragment+RadioGroup
- Android ViewPager+Fragment超高仿微信主界面
- Android ViewPager+Fragment超高仿微信主界面(带底部图标切换动画)
- Android RadioGroup+ViewPager+ActionBar实现仿微信6.0界面(底部滑动菜单栏+导航栏)
- Android——ViewPager+RadioGroup+Fragment
- Android软件架构之RadioGroup + Fragment , TabLayout + ViewPager +Fragment 覆盖市场大部分商业软件架构
- ViewPager+RadioGroup仿微信主界面
- Android中的RadioGroup+ViewPager+Fragment导航样式实现(续)
- android中的ViewPager+Fragment+RadioGroup导航样式的实现
- 4.8 Android Fragment<v4>, ViewPager, RadioGroup的联动
- android 底部导航栏 ViewPager+RadioGroup+Fragment
- 使用ViewPager+RadioGroup+Fragment实现类似微信的底部导航
- ViewPager+RadioGroup实现仿微信主界面
- Android 使用ViewPager和RadioGroup配合Fragment实现标签页,可点击按钮切换、滑动切换。
- ViewPager+RadioGroup实现标题栏切换,Fragment切换
- Android应用经典主界面框架之二:仿网易新闻客户端、CSDN 客户端 (Fragment ViewPager)
- 使用RadioGroup+ViewPager+Fragment实现带滑动的页卡效果TabHost时遇到的问题