ActionBar(V7)的添加非常简单,只需要在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子类就可以了,在Android 3.0及更高的版本中,Activity中都默认包含有ActionBar组件。

drawerLayout(V4)是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现)。

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"> <RelativeLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"> <com.heima.googleplay.widget.PagerTab
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="42dip"
android:background="@drawable/bg_tab"/> <android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tabs"
tools:context=".MainActivity"/>
</RelativeLayout> <FrameLayout
android:id="@+id/start_drawer"
android:layout_width="250dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/bg_tab"></FrameLayout>
</android.support.v4.widget.DrawerLayout>

activity_main.xml

分主页和侧滑页两个页面,侧滑页为:

<FrameLayout
android:id="@+id/start_drawer"
android:layout_width="250dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/bg_tab"></FrameLayout>

start从左到右滑动,end从右到左滑动

继承ActionBarActivity

import android.app.Application;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity; public abstract class BaseActivity extends ActionBarActivity { private static BaseActivity mForegroundActivity; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
initView();
} protected abstract void initView() ; @Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
this.mForegroundActivity = this;
} public static BaseActivity getForegroundActivity(){
return mForegroundActivity;
}
}

BaseActivity

setContentView(R.layout.activity_main);

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu; import com.heima.googleplay.fragment.AppFragment;
import com.heima.googleplay.fragment.BaseFragment;
import com.heima.googleplay.fragment.FragmentFactory;
import com.heima.googleplay.fragment.GameFragment;
import com.heima.googleplay.fragment.HomeFragment;
import com.heima.googleplay.utils.UIUtils;
import com.heima.googleplay.widget.PagerTab; public class MainActivity extends BaseActivity implements OnPageChangeListener { private PagerTab mTabs;
private ViewPager mPager; @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;
} private class MainAdapter extends FragmentStatePagerAdapter{ private String[] tab_names;
private BaseFragment fragment; public MainAdapter(FragmentManager fm) {
super(fm);
tab_names = UIUtils.getStringArray(R.array.tab_names);
} @Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return tab_names[position];
} @Override
public Fragment getItem(int position) { return FragmentFactory.createFragment(position);
} @Override
public int getCount() {
// TODO Auto-generated method stub
return tab_names.length;
} } @Override
protected void initView() {
setContentView(R.layout.activity_main);
mTabs = (PagerTab) findViewById(R.id.tabs);
mPager = (ViewPager) findViewById(R.id.pager);
MainAdapter adapter = new MainAdapter(getSupportFragmentManager());
mPager.setAdapter(adapter);
//绑定到一起
mTabs.setViewPager(mPager);
mTabs.setOnPageChangeListener(this);
} @Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub } @Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub } @Override
public void onPageSelected(int arg0) {
BaseFragment fragment = FragmentFactory.createFragment(arg0);
fragment.show();
} }

MainActivity

android 应用架构随笔五(ActionBar与侧滑菜单DrawerLayout)的更多相关文章

  1. Android 高仿QQ5.2双向側滑菜单DrawerLayout实现源代码

    Android 高仿QQ5.2双向側滑菜单DrawerLayout实现源代码 左右側滑效果图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a ...

  2. 【转】android官方侧滑菜单DrawerLayout详解

    原文网址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0925/1713.html drawerLayout是Support ...

  3. android官方侧滑菜单DrawerLayout详解

    drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物.d ...

  4. android L 新控件侧滑菜单DrawerLayout 使用教程

    介绍 drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产 ...

  5. Android之侧滑菜单DrawerLayout的使用

    在android support.v4 中有一个抽屉视图控件DrawerLayout.使用这个控件,可以生成通过在屏幕上水平滑动打开或者关闭菜单,能给用户一个不错的体验效果. DrawerLayout ...

  6. Android 高大上的侧滑菜单DrawerLayout,解决了不能全屏滑动的问题

    DrawerLayout预览 DrawerLayout主要功能就是 实现侧滑菜单效果的功能,并且可以通过增加一些设置来实现高大上的效果,那么就请看动态图:   注意左上角那个图标,有木有很好玩,哈哈. ...

  7. Android开发——使用高级的RecyclerView实现侧滑菜单删除功能(SwipeRecyclerView)

    使用之前,先简单介绍一下这个SwipeRecyclerView,这是严大(严振杰)基于RecyclerView的进行修改和封装的高级RecyclerView,其可以实现像QQ聊天界面的侧滑删除菜单,和 ...

  8. AndroidUI 侧滑菜单 DrawerLayout的使用

    直接上代码: activity_main.xml: <android.support.v4.widget.DrawerLayout xmlns:android="http://sche ...

  9. android 应用架构随笔六(Loading加载页面)

    import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import com.heima ...

随机推荐

  1. C#中override和overload的区别

    重载应该叫overload,重写叫override:重载某个方法是在同一个类中发生的!重写是在子类中重写父类中的方法. 1.override:   父类:public virtual string T ...

  2. 删除docker私有库镜像

    不断往私库里push image,发现里面大多数镜像已经版本过旧,用不到了,所以决定删除私库里那些没用的镜像. Docker registry默认提供了一个仓库清理的url,如下:可以删除镜像ubun ...

  3. 30天,O2O速成攻略【8.16武汉站】

    活动概况 时间:2015年08月16日13:30-16:30 地点:光谷创业咖啡(光谷广场资本大厦一楼停车场内) 主办:APICloud.爱立示.MBA移动业务助理 网址:www.apicloud.c ...

  4. mysql 操作日期函数【增加,减少时间】

    详情链接:http://www.runoob.com/sql/func-date-add.html 定义和用法 DATE_ADD() 函数向日期添加指定的时间间隔. DATE_ADD(date,INT ...

  5. [BS-19]更改UITextField的placeholder文字颜色的5种方法

    更改UITextField的placeholder文字颜色的5种方法 想要达到的目标是:一个页面上有多个UITextField,当用户聚焦某textField时,该文本框的placeholder的文字 ...

  6. window操作技巧

    word中符号替换 1. 在网页复制内容时,下箭头用"^l"表示(字母L小写),回车用"^p"表示,可用替换命令全局替换(ctrl+f). 2. 添加底纹菜单在 ...

  7. TXT导入出现乱码

    错误#1 11:15 2012-12-19客户提供一txt文本文件,要求导入到数据库,选用dts导入工具,选择数据源步骤如下列预览时出现乱码解答#1 双击打开原始文件中文显示正常,将其另存为选择编码为 ...

  8. 最流行的PHP 代码规范

    “PHP是最好的编程语言” ;-) 那么PHPer习惯使用什么样的代码规范呢?sideeffect.kr通过分析GitHub上托管的开源代码,得出了一些有趣的结果,让我们一起来看看吧. 缩进 空格(7 ...

  9. linux:指令与档案的搜索

    linux下的五种搜索方法(参考自鸟哥linux私房菜基础篇): 一.find :功能很强大,直接搜寻整个硬碟的(速度不是很快,如果系统硬碟较旧的话)----特色:find后面可以接多个目录搜索,它本 ...

  10. Java Thread线程控制

    一.线程和进程 进程是处于运行中的程序,具有一定的独立能力,进程是系统进行资源分配和调度的一个独立单位. 进程特征: A.独立性:进程是系统中独立存在的实体,可以拥有自己独立的资源,每个进程都拥有自己 ...