1.ToolBar
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); //必须在setContentView之前 setContentView(R.layout.activity_tool_bar); mTool = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mTool); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.tool_menu,menu); MenuItem item1 = menu.findItem(R.id.lover1); MenuItem item2 = menu.findItem(R.id.lover2); MenuItem item3 = menu.findItem(R.id.lover3); item1.setTitle("心情好"); SpannableString sbs = new SpannableString(item1.getTitle()); sbs.setSpan(new ForegroundColorSpan(Color.RED),0,1,0); sbs.setSpan(new ForegroundColorSpan(Color.YELLOW),1,2,0); sbs.setSpan(new ForegroundColorSpan(Color.BLUE),2,3,0); item1.setTitle(sbs);// item2.setTitle("天气好"); String stsHtml = "天气好"; item2.setTitle(Html.fromHtml(stsHtml)); item3.setTitle("吃饭香"); return super.onCreateOptionsMenu(menu); }
2.Percent 百分比布局
3.FloatingActionButton 浮动按钮
4.Snackbar
public void clickButton(View view) { Snackbar snackbar = Snackbar.make(view,"你说什么?",Snackbar.LENGTH_SHORT); snackbar.setAction("广告", new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(FloatActionActivity.this, "广告打得好,不如新飞冰箱好", Toast.LENGTH_SHORT).show(); } }); snackbar.setActionTextColor(Color.YELLOW); View mView = snackbar.getView(); mView.setBackgroundColor(Color.BLUE); TextView mText = (TextView) mView.findViewById(android.support.design.R.id.snackbar_text); mText.setText("杀白猪爆金条"); mText.setTextColor(Color.RED); snackbar.show();}
5.TextInputEditText 文本输入布局
public void login(View view) { String user = mUserEdit.getText().toString(); if(user!=null&&user.isEmpty()){ //设置错误提示 mUserLayout.setError("用户名不能为空"); return; }else{ //隐藏错误提示 mUserLayout.setErrorEnabled(false); } ... }
6.TabLayout 选项卡
private void initTab() { mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); mTabLayout.addTab(mTabLayout.newTab().setCustomView(createCustomView()).setText("娃哈哈").setIcon(R.drawable.ic_home)); mTabLayout.addTab(mTabLayout.newTab().setCustomView(createCustomView()).setText("娃哈哈").setIcon(R.drawable.ic_home)); mTabLayout.setTabTextColors(Color.WHITE,Color.RED); mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { /** * 当TAB选中的时候 * @param tab */ @Override public void onTabSelected(TabLayout.Tab tab) { TextView view = (TextView) tab.getCustomView().findViewById(android.R.id.text1); view.setTextColor(Color.RED); } /** * 当TAB解除选中 * @param tab */ @Override public void onTabUnselected(TabLayout.Tab tab) { TextView view = (TextView) tab.getCustomView().findViewById(android.R.id.text1); view.setTextColor(Color.WHITE); } /** * 再次被选中 * @param tab */ @Override public void onTabReselected(TabLayout.Tab tab) { TextView view = (TextView) tab.getCustomView().findViewById(android.R.id.text1); view.setTextColor(Color.YELLOW); } });// mTabLayout.setSelectedTabIndicatorColor(); 指示器颜色 mTabLayout.setSelectedTabIndicatorHeight(2); //指示器高度// mTabLayout.setupWithViewPager(); //关联ViewPager } private View createCustomView(){ View view = LayoutInflater.from(this).inflate(R.layout.tab_item, null); return view; }
7.NavigationView 导航
navigation_menu.xml
8.
android.support.design.widget.AppBarLayout$ScrollingViewBehavior
9.CollapsingToolBarLayout 折叠布局
...
10.CoordinatorLayout.Behavior之move
public class MoveBehavior extends CoordinatorLayout.Behavior{ public MoveBehavior(Context context, AttributeSet attr){ super(context,attr); } @Override public boolean layoutDependsOn(CoordinatorLayout parent, TextView child, View dependency) { return dependency instanceof TextView; } /** * 当我们关系的视图发生改变的时候 * @param parent 父布局 * @param child 设置behavior的布局 * @param dependency 关心的布局 * @return */ @Override public boolean onDependentViewChanged(CoordinatorLayout parent, TextView child, View dependency) { int top = dependency.getTop() - child.getTop(); ViewCompat.offsetTopAndBottom(child,top);//设置该Behavior的TextView随dependency的移动而移动 return true; }}
11.CoordinatorLayout.Behavior之Scroll
... ...
public class ScrollBehavior extends CoordinatorLayout.Behavior{ public ScrollBehavior(Context context, AttributeSet attr){ super(context,attr); } /** * 启动滚动 * @param coordinatorLayout 父布局 * @param child 关联的Behavior的视图 * @param directTargetChild 目标子视图 * @param target 关心的视图 * @param nestedScrollAxes 滚动的方向 * @return */ @Override public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int nestedScrollAxes) { //按位与 非0 为真 SCROLL_AXIS_HORIZONTAL return (nestedScrollAxes& ViewCompat.SCROLL_AXIS_VERTICAL)!=0; } /** * 视图滚动的时候 * @param coordinatorLayout 父布局 * @param child behavior的视图 * @param target 关心的视图 * @param dx 横向移动的像素 * @param dy 竖向移动的像素 * @param consumed */ @Override public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, View child, View target, int dx, int dy, int[] consumed) { super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed); int scrollY = target.getScrollY();// child.setScaleY(); child.setScrollY(scrollY); } /** * 快速滑动 * @param coordinatorLayout 父布局 * @param child 设置Behavior的视图 * @param target 所关心的那个 * @param velocityX 速度X * @param velocityY 速度Y * @param consumed * @return */ @Override public boolean onNestedFling(CoordinatorLayout coordinatorLayout, View child, View target, float velocityX, float velocityY, boolean consumed) { if(child instanceof NestedScrollView){ ((NestedScrollView)child).fling((int) velocityY); } return true; }}
12.
13.StyleColor