ToolBar&DrawerLayout基本结构

来源:互联网 发布:云镜安卓限制安装软件 编辑:程序博客网 时间:2024/05/01 00:21
快速迭代用
使用到了

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;@Overrideprotected 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() {@Overridepublic 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() {@Overridepublic void onPageSelected(int arg0) {//colorChange(arg0);}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic 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);}@Overridepublic 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);}@Overridepublic 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);}@Overridepublic CharSequence getPageTitle(int position) {return TITLES[position];}@Overridepublic int getCount() {return TITLES.length;}@Overridepublic 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.FloatingActionButtonMD风格的圆形按钮,来自于ImageView
android.support.design.widget.Snackbar类似Toast,添加了简单的单个Action
android.support.design.widget.TabLayout选项卡
android.support.design.widget.NavigationViewDrawerLayout的SlideMenu
android.support.design.widget.CoordinatorLayout超级FrameLayout
android.support.design.widget.AppBarLayoutMD风格的滑动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
原创粉丝点击