android actionbar viewpager 实现类微信主界面布局

1 Activity
public class MainActivity extends FragmentActivity {
private ViewPager pager;
private ActionBar actionBar;
private Menu menu;
private Class<?>[] classes;
private String[] titles;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
classes = new Class<?>[] { MyAppFragment.class,
AppCenterFragment.class, ToDoFragment.class };
titles = new String[] { "我的应用", "应用中心", "待办" };
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// viewpager 翻页时选中相应的 tab
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int position, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int position) {
}
});
actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.GRAY));
// actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@Override
public void onTabSelected(Tab tab,
android.app.FragmentTransaction ft) {
// 点击 tab 时选中相应的 viewpager 页面
pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab,
android.app.FragmentTransaction ft) {
}
@Override
public void onTabReselected(Tab tab,
android.app.FragmentTransaction ft) {
}
};
for (int i = 0; i < titles.length; i++) {
actionBar.addTab(actionBar.newTab().setText(titles[i])
.setTabListener(tabListener));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
this.menu = menu;
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_add:
Toast.makeText(this, "Add", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_theme:
Toast.makeText(this, "更换主题", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_system:
Toast.makeText(this, "系统设置", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_uninstall:
Toast.makeText(this, "卸载应用", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
// 按 menu 键时触发一下 button 的 action 事件
menu.performIdentifierAction(R.id.menu_more,
Menu.FLAG_PERFORM_NO_CLOSE);
return true;
}
return super.onKeyUp(keyCode, event);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
try {
fragment = (Fragment) classes[position].newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return fragment;
}
@Override
public int getCount() {
return classes.length;
}
}
}
2 menu 布局文件
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_more"
android:icon="@drawable/menu_more"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="">
<menu>
<item
android:id="@+id/menu_theme"
android:icon="@drawable/ic_launcher"
android:showAsAction="always|withText"
android:title="更换主题"/>
<item
android:id="@+id/menu_system"
android:icon="@drawable/ic_launcher"
android:showAsAction="always|withText"
android:title="系统设置"/>
<item
android:id="@+id/menu_uninstall"
android:icon="@drawable/ic_launcher"
android:showAsAction="always|withText"
android:title="卸载应用"/>
</menu>
</item>
<item
android:id="@+id/menu_add"
android:icon="@drawable/menu_add"
android:orderInCategory="90"
android:showAsAction="ifRoom"
android:title="Add">
</item>
</menu>
android actionbar viewpager 实现类微信主界面布局的更多相关文章
- Android ActionBar应用实战,高仿微信主界面的设计
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ...
- Fragment与Radiogroup联动,经典的主界面布局。使用show和hide的方式实现;
Fragment+RadioGroup经典的主界面布局,方便实用: 1.使用replace方式: 直接上代码,先是布局文件: <?xml version="1.0" enco ...
- Android利用ViewPager仿微信主界面-android学习之旅(78)
首先是介绍ViewPager这个控件 ,这个控件需要pagerAdapter作为容器来提供数据,同时pagerAdapter的数据源是View数组 效果图如下 部分代码如下,实现如下的方法 mPage ...
- Android 之高仿微信主界面
源码下载: http://files.cnblogs.com/aibuli/WeChatSample.zip 主界面主要使用ActionBar来完成. 要实现这个效果,第一步当然是编辑menu目录 ...
- Android控件-ViewPager(仿微信引导界面)
什么是ViewPager? ViewPager是安卓3.0之后提供的新特性,继承自ViewGroup,专门用以实现左右滑动切换View的效果. 如果想向下兼容就必须要android-support-v ...
- android布局实践——模仿微信主界面
这是目前微信6.0版本的主界面 先来分析一波: 1.(top.xml)界面头部有一个微信(6)消息提醒 一个搜索图标 一个更多的的图标+,中间还有一段空白,我们可以弄两个textView(其 ...
- ViewPager学习之仿微信主界面
由于素材的原因,这里都是从网上找的图片,所以所谓的仿微信实际上最后成了下图这货.. .,点击变色也是自己用的windows自带绘图的颜料桶填充的空白. .. watermark/2/text/aHR0 ...
- [android] 手机卫士欢迎细节和主界面
splash界面的细节 ctrl + O 搜索 在去标题的时候,对话框主题被去掉了,有点丑,现在既要有新版本的对话框又不显示标题 把清单文件中activity节点的主题去掉 进入到applicatio ...
- [deviceone开发]-仿微信主界面示例
一.简介 模仿微信主界面的4个页面,作为一个很常规应用的框架模板,值得参考.另外包括简单的菜单,其中搜索还支持语音录入,不过你需要增加飞讯的语音组件重新打包,才能看到效果 二.效果图 三.相关下载 h ...
随机推荐
- 洛谷P4178 Tree (点分治)
题目描述 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K 输入输出格式 输入格式: N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下 ...
- CentOS安装gotop
1.安装go语言环境 yum install golang 2.安装gotop程序 git clone --depth 1 https://github.com/cjbassi/gotop /tmp/ ...
- Java网络编程のOSI
我们可以把客户机和远程服务器理解为主机A和主机B,用户和主机A可以通过主机A中的应用程序进行交互,主机A与主机B之间交互则是通过计算机网络通信进行的. 网络中每台机器称为节点.大多数节点是计算机,此外 ...
- 使用 Git 和 GitHub 托管项目源码
这段时间想研究下,GitHub 的使用,但是桌面版下载速度贼慢(貌似需要FQ) 好在 廖雪峰 老师有一个 Git 的教程,也可以和 GitHub 配合使用 廖雪峰老师的Git教程:http://www ...
- 30.Rotate Image(矩阵旋转)
Level: Medium 题目描述: You are given an n x n 2D matrix representing an image. Rotate the image by 90 ...
- 趣图:当我捕获Bug的时候
趣图:当我以为已捕获了所有可能的异常...的时候 趣图:程序员调 Bug 的感觉,就是这样的
- kvm虚拟机时间配置
注:在虚拟化环境中,虚拟机在长时间运行过程中,时间会变慢,通常的作法是配置ntpdate定时与时间服务器进行时间同步的计划任务. KVM虚拟机默认采用utc时间,需要专门修改,以及考虑kvm时间同步问 ...
- 关于:maven项目中pom.xml文件添加依赖无法自动搜索的问题
用的是eclipse 1.Window------>Show View------->Maven Repositories(这个选项一般不直接显示,而在others里面) 2.操作完毕后会 ...
- LINQ -2015-04-27
LINQ--language-integrated-query 1.它和sql语言区别呢? SQL语言常用在ralational-database中,而LINQ对内存数据,数据库,xml文件等多种形式 ...
- js中的类和对象以及自定义对象
js中的类 1.类的声明 function Person(name,age){ this.name=name; this.age=age; this.test=function(a){ alert(a ...