主布局文件:

android:drawableTop="@drawable/weixin_bg"用的是状态选择器,所以要写4个状态选择器,图片的
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" > <android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager> <RadioGroup
android:id="@+id/rg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal" > <!-- android:button="@null" 表示去掉RadioButton中的圈圈 --> <RadioButton
android:id="@+id/rb_weixin"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/weixin_bg"
android:gravity="center_vertical"
android:text="微信"
android:textSize="16sp" /> <RadioButton
android:id="@+id/rb_contact"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/contact_bg"
android:gravity="center_vertical"
android:text="通讯"
android:textSize="16sp" /> <RadioButton
android:id="@+id/rb_found"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/found_bg"
android:gravity="center_vertical"
android:text="发现"
android:textSize="16sp" /> <RadioButton
android:id="@+id/rb_me"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/me_bg"
android:gravity="center_vertical"
android:text="我"
android:textSize="16sp" />
</RadioGroup> </RelativeLayout>

MainActivity代码:

public class MainActivity extends FragmentActivity implements OnCheckedChangeListener, OnPageChangeListener {
private static final int WEIXIN = 0;
private static final int CONTACT = 1;
private static final int FOUND= 2;
private static final int ME= 3;
private ViewPager vp;
/**RadioGroup*/
private RadioGroup rg;
//四个RadioButton
private RadioButton rb_weixin;
private RadioButton rb_contact;
private RadioButton rb_found;
private RadioButton rb_me; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.vp);
rg = (RadioGroup) findViewById(R.id.rg);
rg.setOnCheckedChangeListener(this);
vp.setAdapter(new MainAdapter(getSupportFragmentManager())); vp.setOnPageChangeListener(this); rb_weixin = (RadioButton) findViewById(R.id.rb_weixin);
rb_contact = (RadioButton) findViewById(R.id.rb_contact);
rb_found = (RadioButton) findViewById(R.id.rb_found);
rb_me = (RadioButton) findViewById(R.id.rb_me); //一进入程序就让微信RadioButton显示为被点击状态
rb_weixin.setChecked(true); }
class MainAdapter extends FragmentPagerAdapter{
List<Fragment> list=new ArrayList<Fragment>();
private WeixinFragment weixinFragment;
private ContactFragment contactFragment;
private FoundFragment foundFragment;
private MeFragment meFragment; public MainAdapter(FragmentManager fm) {
super(fm);
weixinFragment = new WeixinFragment();
contactFragment = new ContactFragment();
foundFragment = new FoundFragment();
meFragment = new MeFragment();
list.add(weixinFragment);
list.add(contactFragment);
list.add(foundFragment);
list.add(meFragment); } @Override
public Fragment getItem(int position) {
Fragment fragment = list.get(position);
return fragment;
} @Override
public int getCount() {
return list.size();
} }
//RadioButton被点击时
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb_weixin:
vp.setCurrentItem(WEIXIN);
break;
case R.id.rb_contact:
vp.setCurrentItem(CONTACT);
break;
case R.id.rb_found:
vp.setCurrentItem(FOUND);
break;
case R.id.rb_me:
vp.setCurrentItem(ME);
break; default:
break;
}
} //ViewPager滑动状态改变时
@Override
public void onPageScrollStateChanged(int arg0) {
System.out.println("onPageScrollStateChanged");
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
System.out.println("onPageScrolled");
}
//当ViewPager滑动停止时
@Override
public void onPageSelected(int position) {
System.out.println("onPageSelected"); switch (position) {
case WEIXIN:
rb_weixin.setChecked(true);
break;
case CONTACT:
rb_contact.setChecked(true);
break;
case FOUND:
rb_found.setChecked(true);
break;
case ME:
rb_me.setChecked(true);
break; default:
break;
}
}
}

这是其中一个Fragment,其它三个一模一样:

public class WeixinFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.fragment_home, null);
return view;
}
}

这样就完成了,这是结果图:

不知道为什么,底部几张图片不能完整地显示,文字也不能居中显示,有没有高手指点一二?

仿照微信的界面,即ViewPager+Fragment的结合使用的更多相关文章

  1. ViewPager + Fragment 实现类微信界面

    在如今的互联网时代,微信已是一个超级App.这篇通过ViewPager + Fragment实现一个类似于微信的界面,之前有用FragmentTabHost实现过类似界面,ViewPager的实现方式 ...

  2. 【原创】【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析

    ViewPager中切换界面Fragment被销毁的问题分析   1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3   2.Fragment生命周期以及与Activ ...

  3. Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24740977 Android如今实现Tab类型的界面方式越来越多,今天就把常见的 ...

  4. 转载【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析

    ViewPager中切换界面Fragment被销毁的问题分析  原文链接 http://www.cnblogs.com/monodin/p/3866441.html 1.使用场景 ViewPager+ ...

  5. Android ActionBar应用实战,高仿微信主界面的设计

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ...

  6. ViewPager Fragment 懒加载 可见 总结 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  7. Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...

  8. 转:ViewPager+Fragment基本使用方法(附源码)

    ViewPager+Fragment可以做出多页面滑动效果,让我们的应用程序界面操作起来更加灵活 对于ViewPager和Fragment组件还不熟悉的朋友,可以先看看相关的资料 首先在activit ...

  9. 使用ViewPager+Fragment来实现带滚动条的多屏滑动-IndicatorFragmentActivity

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17201587 介绍 在android应用中,多屏滑动是一种很常见的风格,博主 ...

随机推荐

  1. c# 获取命名空间 类名 方法名

    c# 获取命名空间 类名 方法名 转[http://blog.sina.com.cn/s/blog_3fc2dcc1010189th.html]   分类: Winform public static ...

  2. “psql: could not connect to server: Connection refused” Error when connecting to remote database

    问题: I am trying to connect to a postgres database installed in a remote server using the following c ...

  3. HDU2202--最大三角形(凸包,枚举)

    Problem Description 老师在计算几何这门课上给Eddy布置了一道题目,题目是这样的:给定二维的平面上n个不同的点,要求在这些点里寻找三个点,使他们构成的三角形拥有的面积最大.Eddy ...

  4. Python第三方库安装技巧

    pytho下有三种安装第三方库方法: 1.通过easy_install安装 2.通过Pip安装 前面两种,由于受国内部门网站原因,如果安装失败,可采用接下来的第三种方法 3.在指定网站下载安装 第三方 ...

  5. Linq第一讲

    在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前,在声明一个变量的时候, 总是要为一个变量指定他的类型甚至在foreach一 ...

  6. iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?

    初代iPhone 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone 3GS也保持不变. 那时编写iOS的App( ...

  7. PHP fpm优化【转】

    在优化PHP的进程数的时候我们首先要了解我们服务器执行一个php使用的内存 1: 查询一个php占用的内存方法 pmap $(pgrep php-fpm | head -1) 我这里查询到的是 000 ...

  8. A*搜寻算法(A星算法)

    A*搜寻算法[编辑] 维基百科,自由的百科全书 本条目需要补充更多来源.(2015年6月30日) 请协助添加多方面可靠来源以改善这篇条目,无法查证的内容可能会被提出异议而移除. A*搜索算法,俗称A星 ...

  9. 2016 ccpc 杭州赛区的总结

    毕竟是在杭电比的,和之前大连的icpc不同,杭电毕竟是隔壁学校,来回吃住全都是在自家寝室,方便! 不过说到方便也是有点不方便,室友都喜欢玩游戏,即使我昨晚9.30就睡觉了,仍然是凌晨一点才睡着,233 ...

  10. nginx proxy优化

    常用优化要点 当nginx用于反向代理时,每个客户端将使用两个连接: 一个用于响应客户端的请求,另一个用于到后端的访问: 如果机器是两核CPU,例如: 1 2 $ grep ^proces /proc ...