Android编程之ActionBar Tabs用法实例分析

 更新时间:2017年7月6日 23:19  点击:1921
这篇文章主要介绍了Android编程之ActionBar Tabs用法,结合实例形式分析了ActionBar Tabs的功能及Tab切换不同的Fragment的相关实现技巧,需要的朋友可以参考下

这里主要实现用Tab切换不同的Fragment,点击View显示or隐藏ActionBar,把ActionBar 设为透明,使界面更加友好,详细代码见资源里的ActionBarTabs。

ActionBar Tab主要用于Fragment之间的切换,其必须要设置ActionBar.TabListener,详细代码如下

ActionBarActivity.Java:

 

 代码如下复制代码

importandroid.app.ActionBar;

importandroid.app.Activity;

importandroid.app.FragmentTransaction;

importandroid.app.ActionBar.Tab;

importandroid.os.Bundle;

importandroid.os.CountDownTimer;

importandroid.view.MotionEvent;

importandroid.view.Window;

publicclassActionBarActivityextendsActivity {

  /** Called when the activity is first created. */

  @Override

  publicvoidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    //使ActionBar变得透明

    requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

    setContentView(R.layout.main);

    finalActionBar actionBar = getActionBar();

    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // remove the activity title to make space for tabs

    actionBar.setDisplayShowTitleEnabled(false);

    AFragment aFragment =newAFragment();

    actionBar.addTab(actionBar.newTab().setText("Tab-A")

        .setTabListener(newListenerA(aFragment)));

    BFragment bFragment =newBFragment();

    actionBar.addTab(actionBar.newTab().setText("Tab-B")

        .setTabListener(newListenerB(bFragment)));

  }

  //点击显示or隐藏ActionBar

  publicbooleanonTouchEvent(MotionEvent event){

    ActionBar bar = getActionBar();

    switch(event.getAction()){

      caseMotionEvent.ACTION_UP:

        if(bar.isShowing()) bar.hide();

        elsebar.show();

        break;

      default:

          break;

    }

    returntrue;

  }

  privateclassListenerAimplementsActionBar.TabListener {

    privateAFragment mFragment;

    // Called to create an instance of the listener when adding a new tab

    publicListenerA(AFragment fragment) {

      mFragment = fragment;

    }

    publicvoidonTabSelected(Tab tab, FragmentTransaction ft) {

      ft.add(R.id.fragment, mFragment,null);

    }

    publicvoidonTabUnselected(Tab tab, FragmentTransaction ft) {

      ft.remove(mFragment);

    }

    publicvoidonTabReselected(Tab tab, FragmentTransaction ft) {

      // do nothing }

    }

  }

  privateclassListenerBimplementsActionBar.TabListener {

    privateBFragment mFragment;

    // Called to create an instance of the listener when adding a new tab

    publicListenerB(BFragment fragment) {

      mFragment = fragment;

    }

    publicvoidonTabSelected(Tab tab, FragmentTransaction ft) {

      ft.add(R.id.fragment, mFragment,null);

    }

    publicvoidonTabUnselected(Tab tab, FragmentTransaction ft) {

      ft.remove(mFragment);

    }

    publicvoidonTabReselected(Tab tab, FragmentTransaction ft) {

      // do nothing }

    }

  }

}

 

其中涉及到两个Fragment,在前面Fragment的笔记中讲过,这里就不再赘述。类AFragment实现如下,BFragment实现与这类似:

 

 代码如下复制代码

publicclassAFragmentextendsFragment {

  publicView onCreateView(LayoutInflater inflater, ViewGroup container,

      Bundle savedInstanceState) {

    returninflater.inflate(R.layout.alayout, container,false);

    }

}

 

小编给大家推荐的这篇文章介绍了 Android编程之交互对话框实例浅析,非常实用,有兴趣的同学快来看看吧!

1. 在Android SDK中,虽然有许多的窗口,有些类似Modeless的窗口、有些类似于前端Force Focus的窗口,但真正具有交互功能的则为AlertDialog对话窗口。

 

 代码如下复制代码

newAlertDialog.Builder(EX03_12.this)

.setTitle(R.string.app_about)

.setMessage(R.string.app_about_msg)

.setPositiveButton(R.string.str_ok,

  newDialogInterface.OnClickListener()

  {

  publicvoidonClick(DialogInterface dialoginterface,inti)

  {

  }

  }).show();

 

这里仅是有一个确定按钮,还可以添加其他的按钮和图标,可以参照Android文档。

2.提到AlertDialog,自然就会想到Toast。Toast就是一个简短的小信息,可以提示音量大小的调整等。对程序员来说,它也是一个非常好用的Debug工具。

 

 代码如下复制代码

/*使用系统标准的 makeText()方式来产生Toast讯息*/

Toast.makeText( EX04_03.this,String,Toast.LENGTH_LONG).show();

 

第三个参数可以是LENGTH_LONG或LENGTH_SHORT,前者表示时间长,后者较短。当然,也可以使用重写的Toast对象的方法,自己定义Toast显示的Layout。

小编推荐的这篇文章介绍了Android开发之菜单(menu)用法实例分析,非常实用,有兴趣的同学快来看看吧

Android手机专门用一个按键“menu“来显示菜单。

要实现菜单功能,首先要通过方法onCreateOptionMenu来创建菜单,创建方法有两种:一种是直接导入有menu的xml文件,一种是用类Menu的方法直接添加。创建好菜单后,用事件监听器onOptionItemSelected对能够触发的事件进行监听。

下面这个例子有两个Activity,分别有上面的两种方法实现menu,每个menu里都有事件监听器进行Activity跳转和退出。

1.资源文件下的menu文件res/menu/menu.xml

 

 代码如下复制代码

 <itemandroid:id="@+id/about"

   android:title="关于"/>

 <itemandroid:id="@+id/exit"

   android:title="退出"/>

 

Activity01.Java

 

 代码如下复制代码

packagecom.yarin.android.Examples_04_13;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.view.Menu;

importandroid.view.MenuInflater;

importandroid.view.MenuItem;

publicclassActivity01extendsActivity

{

 /** Called when the activity is first created. */

 @Override

 publicvoidonCreate(Bundle savedInstanceState)

 {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

 }

 /*创建menu*/

 public boolean onCreateOptionsMenu(Menu menu)

 {

  //MenuInflater class is used to instantiate menu XML files into Menu objects

  MenuInflater inflater = getMenuInflater();

  //设置menu界面为res/menu/menu.xml

  inflater.inflate(R.menu.menu, menu);

  return true;

 }

 /*处理菜单事件*/

 public boolean onOptionsItemSelected(MenuItem item)

 {

  //得到当前选中的MenuItem的ID,

  int item_id = item.getItemId();

  switch (item_id)

  {

   case R.id.about:

    /* 新建一个Intent对象 */

    Intent intent = new Intent();

    /* 指定intent要启动的类 */

    intent.setClass(Activity01.this, Activity02.class);

    /* 启动一个新的Activity */

    startActivity(intent);

    /* 关闭当前的Activity */

    Activity01.this.finish();

    break;

   caseR.id.exit:

    Activity01.this.finish();

    break;

  }

  returntrue;

 }

}

 

Activity02.java

 

 代码如下复制代码

packagecom.yarin.android.Examples_04_13;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.view.Menu;

importandroid.view.MenuItem;

publicclassActivity02extendsActivity

{

 publicvoidonCreate(Bundle savedInstanceState)

 {

  super.onCreate(savedInstanceState);

  /* 设置显示main2.xml布局 */

  setContentView(R.layout.main2);

 }

 /*创建menu*/

 public boolean onCreateOptionsMenu(Menu menu)

 {

  //为menu添加内容

  menu.add(0, 0, 0, R.string.ok);

  menu.add(0, 1, 1, R.string.back);

  return true;

 }

 /*处理menu的事件*/

 public boolean onOptionsItemSelected(MenuItem item)

 {

  //得到当前选中的MenuItem的ID,

  int item_id = item.getItemId();

  switch (item_id)

  {

   case 0:

   case 1:

    /* 新建一个Intent对象 */

    Intent intent = new Intent();

    /* 指定intent要启动的类 */

    intent.setClass(Activity02.this, Activity01.class);

    /* 启动一个新的Activity */

    startActivity(intent);

    /* 关闭当前的Activity */

    Activity02.this.finish();

    break;

  }

  returntrue;

 }

}

 

本例用到了两个Activity,不要忘记在AndroidManifest.xml中声明。

安卓手机是现在很多人都在使用的手机,安卓手机的内存是很多人比较关心的。这次文章就给大家介绍下安卓手机内存怎么增加,希望对大家有所帮助。

安装一个腾讯电脑管家,或其它你认为不错的安全软件。下载安装完成并且打开管家首页。在手机管家首页界面下滑,找到垃圾清理项。如下图,“清理益起来”就是该版本软件的垃圾清理。扫描垃圾,可能需要花一定的时间,要耐心等待。扫描完成点击立即清理即可完成清理。 安卓手机怎么增加内存

安卓手机怎么增加内存 三联

  对于一些大文件或软件,可以右上角的手机瘦身进行手动清理。选中不需要的大文件和软件删除,就能省下很多内存。另外注意一下,不要随便现在不常用的文件和软件,因为这不仅会占用空间,还会影响手机系统运行速度。  安卓手机怎么增加内存

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • C#中using的三种用法

    using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • c# socket网络编程接收发送数据示例代码

    这篇文章主要介绍了c# socket网络编程,server端接收,client端发送数据,大家参考使用吧...2020-06-25
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • 浅谈node.js中async异步编程

    1.什么是异步编程? 异步编程是指由于异步I/O等因素,无法同步获得执行结果时, 在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数、ajax请求等等。示例: for (var i = 1; i <= 3; i++) {setTimeout(functi...2015-10-23
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • iscroll.js 用法介绍

    最新版下载: http://www.csdn123.com/uploadfile/2015/0428/20150428062734485.zip 概要 iScroll 4 这个版本完全重写了iScroll这个框架的原始代码。这个项目的产生...2016-05-19
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • C#编程总结(六)详解异步编程

    本篇文章主要介绍了C#异步编程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。...2020-06-25