`

ToolBar&DrawerLayout基本结构

阅读更多
快速迭代用
使用到了

1:ToolBar + ShareActionProvider
2:DrawerLayout
3:ActionBarDrawerToggle
4:ViewPager + TabsLayout








import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.ShareActionProvider;
import android.support.v7.widget.Toolbar;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import com.example.toolbar.widget.TabsLayout;

public class MainActivity extends ActionBarActivity {
	private DrawerLayout mDrawerLayout;
	private ActionBarDrawerToggle mDrawerToggle;
	private ShareActionProvider mShareActionProvider;
	private TabsLayout tabsLayout;
	private ViewPager mViewPager;
	private Toolbar mToolbar;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initViews();
	}

	private void initViews() {
		mToolbar = (Toolbar) findViewById(R.id.toolbar);
		// toolbar.setLogo(R.drawable.ic_launcher);
		mToolbar.setTitle("Rocko");// 标题的文字需在setSupportActionBar之前,不然会无效
		// toolbar.setSubtitle("副标题");
		setSupportActionBar(mToolbar);
		/* 这些通过ActionBar来设置也是一样的,注意要在setSupportActionBar(toolbar);之后,不然就报错了 */
		// getSupportActionBar().setTitle("标题");
		// getSupportActionBar().setSubtitle("副标题");
		// getSupportActionBar().setLogo(R.drawable.ic_launcher);

		/* 菜单的监听可以在toolbar里设置,也可以像ActionBar那样,通过下面的两个回调方法来处理 */
		mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
			@Override
			public boolean onMenuItemClick(MenuItem item) {
				switch (item.getItemId()) {
				case R.id.action_settings:
					Toast.makeText(MainActivity.this, "action_settings", 0).show();
					break;
				case R.id.action_share:
					Toast.makeText(MainActivity.this, "action_share", 0).show();
					break;
				default:
					break;
				}
				return true;
			}
		});
		getSupportActionBar().setDisplayHomeAsUpEnabled(true);
		
		/* findView */
		mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer);
		mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.drawer_open,
				R.string.drawer_close);
		mDrawerToggle.syncState();
		mDrawerLayout.setDrawerListener(mDrawerToggle);

		tabsLayout = (TabsLayout) findViewById(R.id.tabs);
		mViewPager = (ViewPager) findViewById(R.id.pager);
		mViewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
		tabsLayout.setViewPager(mViewPager);
		tabsLayout.setOnPageChangeListener(new OnPageChangeListener() {

			@Override
			public void onPageSelected(int arg0) {
//				colorChange(arg0);
			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
			}

			@Override
			public void onPageScrollStateChanged(int arg0) {
			}
		});
		initTabsValue();
	}

	/** 设备配置改变时 */  
    @Override  
    public void onConfigurationChanged(Configuration newConfig) {  
        super.onConfigurationChanged(newConfig);  
        mDrawerToggle.onConfigurationChanged(newConfig);  
    }  
    
	/**
	 * mPagerSlidingTabStrip默认值配置
	 * 
	 */
	private void initTabsValue() {
		// 底部游标颜色
		tabsLayout.setIndicatorColor(Color.BLUE);
		// tab的分割线颜色
		tabsLayout.setDividerColor(Color.TRANSPARENT);
		// tab背景
		tabsLayout.setBackgroundColor(Color.parseColor("#4876FF"));
		// tab底线高度
		tabsLayout.setUnderlineHeight((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
				1, getResources().getDisplayMetrics()));
		// 游标高度
		tabsLayout.setIndicatorHeight((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
				5, getResources().getDisplayMetrics()));
		// 选中的文字颜色
		tabsLayout.setSelectedTextColor(Color.WHITE);
		// 正常文字颜色
		tabsLayout.setTextColor(Color.BLACK);
	}


	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		/* ShareActionProvider配置 */
		mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menu.findItem(R.id.action_share));
		Intent intent = new Intent(Intent.ACTION_SEND);
		intent.setType("text/*");
		mShareActionProvider.setShareIntent(intent);
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// switch (item.getItemId()) {
		// case R.id.action_settings:
		// Toast.makeText(MainActivity.this, "action_settings", 0).show();
		// break;
		// case R.id.action_share:
		// Toast.makeText(MainActivity.this, "action_share", 0).show();
		// break;
		// default:
		// break;
		// }
		return super.onOptionsItemSelected(item);
	}

	/* ***************FragmentPagerAdapter***************** */
	public class MyPagerAdapter extends FragmentPagerAdapter {

		private final String[] TITLES = { "分类", "主页", "热门推荐", "热门收藏", "本月热榜", "今日热榜", "专栏", "随机" };

		public MyPagerAdapter(FragmentManager fm) {
			super(fm);
		}

		@Override
		public CharSequence getPageTitle(int position) {
			return TITLES[position];
		}

		@Override
		public int getCount() {
			return TITLES.length;
		}

		@Override
		public Fragment getItem(int position) {
			return SimpleFragment.newInstance(position);
		}

	}

}


主布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.toolbar.MainActivity" >

    <include layout="@layout/toolbar" />

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <!-- 内容界面 -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/holo_blue_dark"
            android:orientation="vertical" >

            <com.example.toolbar.widget.TabsLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="48dip" >
            </com.example.toolbar.widget.TabsLayout>

            <android.support.v4.view.ViewPager
                android:id="@+id/pager"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >
            </android.support.v4.view.ViewPager>
        </LinearLayout>

        <!-- 侧滑菜单内容 -->
        <LinearLayout
            android:id="@+id/drawer_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="@android:color/white"
            android:orientation="vertical"
            android:padding="8dp" >

            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent" 
                android:text="test item"
                />
        </LinearLayout>
        
        <!-- 侧滑菜单内容 -->
        <LinearLayout
            android:id="@+id/drawer_view_right"
            android:layout_width="80dp"
            android:layout_height="match_parent"
            android:layout_gravity="end"
            android:background="@android:color/white"
            android:orientation="vertical"
            android:padding="8dp" >

            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent" 
                android:text="test item"
                />
        </LinearLayout>
        
    </android.support.v4.widget.DrawerLayout>

</LinearLayout>



Design Support Library包含8个控件,具体如下:

android.support.design.widget.TextInputLayout 强大带提示的MD风格的EditText
android.support.design.widget.FloatingActionButton MD风格的圆形按钮,来自于ImageView
android.support.design.widget.Snackbar 类似Toast,添加了简单的单个Action
android.support.design.widget.TabLayout 选项卡
android.support.design.widget.NavigationView DrawerLayout的SlideMenu
android.support.design.widget.CoordinatorLayout 超级FrameLayout
android.support.design.widget.AppBarLayout MD风格的滑动Layout
android.support.design.widget.CollapsingToolbarLayout 可折叠MD风格ToolbarLayout

Android Design Support Library使用详解
http://www.open-open.com/lib/view/open1433496206666.html

背景模糊的Navigation Drawer。可以设置参数达到不同的模糊效果
https://github.com/charbgr/BlurNavigationDrawer

https://github.com/hugeterry/CoordinatorTabLayout
  • 大小: 61.1 KB
  • 大小: 49 KB
  • 大小: 58.5 KB
分享到:
评论

相关推荐

    ToolBar+DrawerLayout + NavigationView

    `NavigationView`是设计支持库中的另一个组件,常与`DrawerLayout`配合使用,为抽屉提供结构化的菜单内容。在XML布局中,`&lt;com.google.android.material.navigation.NavigationView&gt;`用于创建一个包含头像、标题、子...

    My_Toolbar_DrawerLayout:一个带有抽屉布局应用程序的简单工具栏

    "My_Toolbar_DrawerLayout" 是一个Android应用程序项目,它的核心特性是将抽屉布局(DrawerLayout)与工具栏(Toolbar)结合在一起。在Android开发中,抽屉布局常用于实现侧滑菜单,而工具栏是作为替代传统ActionBar...

    drawerlayout

    1. **基本结构**:`DrawerLayout`通常包含两部分:主要内容视图(通常是Activity的主要布局)和滑动抽屉视图(包含侧滑菜单)。抽屉可以通过设置`android:layout_gravity`属性来指定是从左侧还是右侧滑出。 2. **...

    DrawerLayout使用demo

    1. DrawerLayout的基本结构和使用,包括主内容视图和抽屉视图。 2. 如何将Toolbar集成到DrawerLayout中,作为App Bar。 3. 使用DrawerToggle进行抽屉的开关控制和状态同步。 4. RecyclerView在抽屉视图中的应用,...

    Android侧滑菜单DrawerLayout

    在Android应用开发中,侧滑菜单...总之,`DrawerLayout`是Android开发中一个重要的组件,它使得应用能够优雅地呈现多层级的导航结构。通过合理地使用和定制,开发者可以构建出符合用户习惯且功能强大的Android应用。

    DrawerLayout

    DrawerLayout基本结构 DrawerLayout由两个主要部分组成:主内容视图(通常是Activity的主要布局)和一个或多个抽屉视图(通常包含侧边栏菜单)。抽屉视图可以是从左侧或右侧滑出,它们的可见性可以通过手势或者...

    使用DrawerLayout实现双向侧滑菜单

    通过学习和分析这个示例,你不仅可以掌握DrawerLayout的基本用法,还可以了解如何实现双向侧滑菜单,这对于创建功能丰富的Android应用是非常有用的。 总之,使用DrawerLayout在Android应用中创建双向侧滑菜单是一项...

    449-android-drawerlayout-v2.0.rar_DrawerLayout_android

    1. **DrawerLayout基本概念**: DrawerLayout允许在主视图旁边添加一个或两个“抽屉”视图,通常用作导航菜单。抽屉可以是从左侧或右侧滑出,甚至在某些情况下,也可以从底部滑出。这个组件是在Android Support ...

    使用DrawerLayout制作仿QQ6.0双侧滑菜单

    以下是一个基本的 DrawerLayout 结构: ```xml &lt;android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width=...

    DrawerLayoutDemo

    在Android的布局层次结构中,DrawerLayout作为根视图,可以包含多个子视图,其中一个是主要内容视图,另一个或两个是抽屉视图。 要创建一个基本的DrawerLayout,首先需要在XML布局文件中声明DrawerLayout,并设置...

    效果炫酷的drawerlayout

    首先,我们来看如何设置DrawerLayout的基本结构。DrawerLayout通常包含两个子视图:主内容视图(通常是Activity的根布局)和一个或多个抽屉视图(用于显示导航菜单)。在XML布局文件中,DrawerLayout作为顶级容器,...

    DrawerLayout实现侧拉菜单

    **DrawerLayout的基本结构** DrawerLayout有两个主要区域:主内容视图(Main Content View)和抽屉视图(Drawer View)。主内容视图通常是应用的主要界面,而抽屉视图则作为侧拉菜单,可以从屏幕边缘滑出。默认情况...

    drawerlayout菜单框架

    基本结构如下: ```xml &lt;android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" ...

    DrawerLayout侧边栏实现demo

    以下是一个基本的DrawerLayout XML结构: ```xml &lt;androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_...

    DrawerLayout实现侧滑菜单

    首先,我们需要了解DrawerLayout的基本结构。DrawerLayout有两个主要区域:主内容视图(content view)和抽屉视图(drawer view)。主内容视图通常占据屏幕的大部分空间,而抽屉视图则隐藏在屏幕边缘,可以通过滑动...

    DrawerLayout实现QQ5.2侧滑效果

    首先,我们了解DrawerLayout的基本结构。DrawerLayout允许在屏幕边缘滑出一个或两个“抽屉”视图。通常,左侧的抽屉用于导航菜单,右侧的抽屉用于显示更多内容或者设置。在XML布局文件中,DrawerLayout作为根元素,...

    DrawerLayout 侧滑菜单

    1. **DrawerLayout的基本结构**: DrawerLayout包含两个主要部分:主内容视图(通常是Activity的主要布局)和抽屉视图(侧滑菜单)。抽屉视图可以在左侧或右侧滑出,通过`android:layout_gravity`属性指定其位置。 ...

Global site tag (gtag.js) - Google Analytics