Android --------------------ActionBar 与 ViewPager 和 ActionTab 切换 的源代码实现
參考网址:
源代码实现:
package com.example.actionbardemo2; import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem; public class MainActivity extends FragmentActivity implements
ActionBar.TabListener { private dFragment1 fragment1 = new dFragment1();
private dFragment2 fragment2 = new dFragment2();
private dFragment3 fragment3 = new dFragment3(); private static final int TAB_INDEX_COUNT = 2; private static final int TAB_INDEX_ONE = 0;
private static final int TAB_INDEX_TWO = 1; private ViewPager viewPager;
private myFrgamentPagerAdapter viewPagerAdapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 1 设置 ViewPager
setViewPager(); // 2 获取ActionBar
getActionBarMethod(); } // 1 设置 ViewPager
private void setViewPager() { viewPagerAdapter = new myFrgamentPagerAdapter(getSupportFragmentManager()); viewPager = (ViewPager)this.findViewById(R.id.viewpager);
viewPager.setAdapter(viewPagerAdapter);
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener()
{
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
super.onPageSelected(position); final ActionBar actionBar = getActionBar();
actionBar.setSelectedNavigationItem(position); } @Override
public void onPageScrollStateChanged(int state) {
// TODO Auto-generated method stub
super.onPageScrollStateChanged(state);
} }); } // 2 获取ActionBar
private void getActionBarMethod() {
//获取ActionBar
ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // 设置actionBar的颜色
Drawable draw = new ColorDrawable(Color.GREEN);
actionBar.setBackgroundDrawable(draw); // 设置ActionBar tab
ActionBar.Tab tab = actionBar.newTab();
tab.setText("核心产品");
tab.setIcon(draw);
tab.setTabListener(this);
actionBar.addTab(tab); tab = actionBar.newTab();
tab.setText("平台产品");
tab.setIcon(draw);
tab.setTabListener(this);
actionBar.addTab(tab); // 去掉左側小箭头右边的图标:
// 代表 左側要有一个箭头
actionBar.setDisplayHomeAsUpEnabled(true);
// 代表 禁用Logo
actionBar.setDisplayUseLogoEnabled(false);
// 使用 透明色来取代原有的图标,相当于 不显示
actionBar.setIcon(new ColorDrawable(Color.TRANSPARENT));
} /**
* ActionBar action 点击事件的处理:
* */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
} return super.onOptionsItemSelected(item);
} /**
* ActionTab 的 点击事件:
*
* */
@Override
public void onTabReselected(Tab arg0, android.app.FragmentTransaction arg1) {
// TODO Auto-generated method stub } @Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction arg1) {
// TODO Auto-generated method stub
// 依据ActionBar Tab 的 位置 index 来设置 ViewPager 的 当前的显示页。 viewPager.setCurrentItem(tab.getPosition());
} @Override
public void onTabUnselected(Tab arg0, android.app.FragmentTransaction arg1) {
// TODO Auto-generated method stub } /**
* ActionBar 的样式,设置。
*
* */
@Override
public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} //TODO 2 Viewpager 的自己定义类:
class myFrgamentPagerAdapter extends FragmentPagerAdapter { public myFrgamentPagerAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
} @Override
public Fragment getItem(int position) {
// TODO 设置 返回的数据
switch (position)
{
case TAB_INDEX_ONE: return fragment1; case TAB_INDEX_TWO: return fragment2;
} throw new IllegalStateException("No fragment at position " + position);
} @Override
public int getCount() {
// TODO Auto-generated method stub
return TAB_INDEX_COUNT;
} } }
Android --------------------ActionBar 与 ViewPager 和 ActionTab 切换 的源代码实现的更多相关文章
- Android编程心得-使用ActionBar+Fragment+ViewPager实现动态切换Menu效果
1.首先上效果图 2.本例实现的效果主要适用于当前页面有多个页签时.进行Fragment切换时,能够利用不同的Menu样式与当前Fragment中的内容进行配合,能够大大添加复用性,看到效果图后,以下 ...
- Android ActionBar与ViewPager合用
内容可以左右滑动,因为使用了ViewPager(我这里用了V4包) view_pager_main.xml <?xml version="1.0" encoding=&quo ...
- Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab
今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可 ...
- Android Studio精彩案例(一)《ActionBar和 ViewPager版仿网易新闻客户端》
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 为了能更好的分享高质量的文章,所以开设了此专栏.文章代码都以Android Studio亲测运行,读者朋友可在后面直接下载源码.该专栏 ...
- Android中使用ViewPager实现屏幕页面切换和页面切换效果
之前关于如何实现屏幕页面切换,写过一篇博文<Android中使用ViewFlipper实现屏幕切换>,相比ViewFlipper,ViewPager更适用复杂的视图切换,而且Viewpag ...
- Android ViewPager实现选项卡切换
ViewPager实现选项卡切换,效果图如下: 步骤一:这里使用兼容低版本的v4包进行布局,这里eclipse没有输入提示,所以要手动输入,文件名称“activity_main.xml” <Re ...
- Android随笔--使用ViewPager实现简单地图片的左右滑动切换
Android中图片的左右切换随处可见,今天我也试着查阅资料试着做了一下,挺简单的一个小Demo,却也发现了一些问题,话不多说,上代码~: 使用了3个xml文件作为ViewPager的滑动page,布 ...
- Android Material Design:ViewPager与android.support.design.widget.TabLayout双向交互联动切换
通常,android.support.design.widget.TabLayout与Android的ViewPager联合使用,实现与ViewPager的切换与联动.(1)比如,当用户手指触摸选择T ...
- Android:使用ViewPager实现左右滑动切换图片(图上有点点)
在以下实例的基础上加上点点 Android:使用ViewPager实现左右滑动切换图片 (简单版) 效果预览: 因为要把点点放图片上,所以修改布局为相对布局: <?xml version=&qu ...
随机推荐
- Jmeter-Maven-Plugin高级应用:Modifying Properties
Modifying Properties Pages 12 Home Adding additional libraries to the classpath Advanced Configurati ...
- utc时间转换成标准时间
把这个时间 /Date(1484884647943+0800)/ 转成标准时间 String str = String.format("%tF %<tT", 14848846 ...
- 限制RICHTEXTBOX的输入的范围
附件: http://files.cnblogs.com/xe2011/WindowsFormsApplication_LimitRichTextBoxInput.rar using ...
- PHP 表单 - 3(PHP 表单 - 必需字段)
PHP 表单 - 必需字段 本章节我们将介绍如何设置表单必需字段及错误信息. PHP - 必需字段 在上一章节我们已经介绍了表的验证规则,我们可以看到"名字", "E-m ...
- Oracle function实现根据输入的日期以及天数,获取此日期之后的天数的工作日
前提:在法定节日表(t_fdjr )中维护法定节日包括周六周天 /** * 功能描述:根据输入的日期以及天数,获取此日期之后的天数的工作日 * 输入参数: * i_date YYYY-MM-DD * ...
- 一些面试基本知识(Android篇一)
Android Activity设计模式之MVC模式(介绍MVP之前的引子) 參考博客.文章 http://www.cnblogs.com/liqw/p/4175325.html MVC即Model- ...
- mixin
mixin.scss //-----------------------------------浏览器前缀----------------------------------------- //例子: ...
- linux下sar tool command note
linux下的sar工具简介 我习惯使用的命令是 : sar -r -f /var/log/sa/sa24 sar 既能报告当前数据,也能报告历史数据 不带选项执行会以10分钟为间隔报告自午夜 ...
- eclipse 如何修改maven插件本地仓库jar包默认存储位置
eclipse 如何修改maven插件本地仓库jar包默认存储位置 CreateTime--2018年4月18日11:04:47 Author:Marydon 1.更改eclipse的maven本 ...
- bss段,代码段及数据段,堆栈段的区别
bss段,代码段及数据段,堆栈段的区别 时间:2012-11-21 10:0772人阅读 BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英 ...