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>

DEMO 下载

android actionbar viewpager 实现类微信主界面布局的更多相关文章

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

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

  2. Fragment与Radiogroup联动,经典的主界面布局。使用show和hide的方式实现;

    Fragment+RadioGroup经典的主界面布局,方便实用: 1.使用replace方式: 直接上代码,先是布局文件: <?xml version="1.0" enco ...

  3. Android利用ViewPager仿微信主界面-android学习之旅(78)

    首先是介绍ViewPager这个控件 ,这个控件需要pagerAdapter作为容器来提供数据,同时pagerAdapter的数据源是View数组 效果图如下 部分代码如下,实现如下的方法 mPage ...

  4. Android 之高仿微信主界面

    源码下载:  http://files.cnblogs.com/aibuli/WeChatSample.zip 主界面主要使用ActionBar来完成.  要实现这个效果,第一步当然是编辑menu目录 ...

  5. Android控件-ViewPager(仿微信引导界面)

    什么是ViewPager? ViewPager是安卓3.0之后提供的新特性,继承自ViewGroup,专门用以实现左右滑动切换View的效果. 如果想向下兼容就必须要android-support-v ...

  6. android布局实践——模仿微信主界面

    这是目前微信6.0版本的主界面 先来分析一波: 1.(top.xml)界面头部有一个微信(6)消息提醒    一个搜索图标   一个更多的的图标+,中间还有一段空白,我们可以弄两个textView(其 ...

  7. ViewPager学习之仿微信主界面

    由于素材的原因,这里都是从网上找的图片,所以所谓的仿微信实际上最后成了下图这货.. .,点击变色也是自己用的windows自带绘图的颜料桶填充的空白. .. watermark/2/text/aHR0 ...

  8. [android] 手机卫士欢迎细节和主界面

    splash界面的细节 ctrl + O 搜索 在去标题的时候,对话框主题被去掉了,有点丑,现在既要有新版本的对话框又不显示标题 把清单文件中activity节点的主题去掉 进入到applicatio ...

  9. [deviceone开发]-仿微信主界面示例

    一.简介 模仿微信主界面的4个页面,作为一个很常规应用的框架模板,值得参考.另外包括简单的菜单,其中搜索还支持语音录入,不过你需要增加飞讯的语音组件重新打包,才能看到效果 二.效果图 三.相关下载 h ...

随机推荐

  1. Java对称加密算法

    对称加密算法概念 加密密钥和解密密钥相同,大部分算法加密揭秘过程互逆. 特点:算法公开.(相比非对称加密)计算量小.加密速度快.效率高. 弱点:双方都使用同样的密钥,安全性得不到保证. 常用对称加密算 ...

  2. 实战iOS7之NSURLSession

    NSURLSession VS NSURLConnection NSURLSession可以看做是NSURLConnection的进化版,其对NSURLConnection的改进点有: * 根据每个S ...

  3. BP神经网络研究(一)

    本随笔参考文章:<BP神经网络详解与实例>(链接: https://pan.baidu.com/s/1e2niIvD9KtLXEqwXtgdXxw 密码: vb8d) 本随笔原创,转发请注 ...

  4. C#多线程学习(二) 如何操纵一个线程

    在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就 ...

  5. 性能测试工具Locust的使用----TaskSet类~~task任务嵌套

    内容来自网络 http://blog.sina.com.cn/s/blog_a7ace3d80102w9r0.html TaskSet类 正如字面意思,TaskSet类定义了每个用户的任务集合,测试任 ...

  6. Mysql内置功能《五》 函数

    一 函数 MySQL中提供了许多内置函数,例如: 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND( ...

  7. Spring整合JPA时,为实体类添加@Entity注解时提示The type MultipartEntity is deprecated

    这个情况是由于导入错了Entity包所导致的. 按住Alt+T时,会有两个关于@Entity的提示 org.hibernate.annotations.Entity 和 javax.persisten ...

  8. 【Linux】CentOS7上解压zip需要安装uzip

    1.安装zip.unzip应用 yum install zip unzip 2.压缩和解压文件 以下命令均在/home目录下操作 cd /home #进入/home目录 a.把/home目录下面的my ...

  9. “全栈2019”Java第三十一章:二维数组和多维数组详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  10. mac配置虚拟机的net模式

    a.点击PD的偏好设置进入 1)选择net模式(shared)(相当于VM的V8虚拟机) 2)勾选将mac连入当前的网络 3)勾选在网络系统偏好设置中显示网络连接 b.点击mac的网络系统偏好设置,可 ...