Android Design框架

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 = "<font color='#ff6f00'>天</font><font color='#00b7ff'>气</font>好";
        item2.setTitle(Html.fromHtml(stsHtml));
        item3.setTitle("吃饭香");

        return super.onCreateOptionsMenu(menu);
    }

2.Percent 百分比布局

<android.support.percent.PercentRelativeLayout ...>

    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#909090"
        app:layout_widthPercent="80%"
        app:layout_heightPercent="20%"
        />
    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#ffa200"
        android:layout_alignParentRight="true"
        app:layout_widthPercent="20%"
        app:layout_heightPercent="80%"
        />
    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#00bafd"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        app:layout_widthPercent="80%"
        app:layout_heightPercent="20%"
        />
    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#1aff00"
        android:layout_alignParentBottom="true"
        app:layout_widthPercent="20%"
        app:layout_heightPercent="80%"
        />
    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#ff00fb"
        android:layout_centerInParent="true"
        app:layout_widthPercent="60%"
        app:layout_heightPercent="60%"
        />
</android.support.percent.PercentRelativeLayout>

e8fd8ff5959e2c19c47193cb66c7bd626c8.jpg

3.FloatingActionButton 浮动按钮

<android.support.design.widget.CoordinatorLayout ...>

    <!--
    backgroundTint:设置颜色
    pressedTranslationZ:点击时的阴影大小
    fabSize:确定floatingactionbutton大小
    -->
    <android.support.design.widget.FloatingActionButton
        android:layout_margin="10dp"
        android:onClick="clickButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_home"
        android:layout_gravity="bottom|right"
        app:backgroundTint="#90909090"
        app:borderWidth="0dp"
        app:fabSize="normal"
        app:rippleColor="#ff4d00"
        />
</android.support.design.widget.CoordinatorLayout>

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 文本输入布局

<android.support.design.widget.TextInputEditText
    android:id="@+id/input_user_edit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="请输入用户名" />

d433a665e3765fe189a3dc38089abd63554.jpg

    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 导航

<android.support.v4.widget.DrawerLayout ...>

    <android.support.design.widget.AppBarLayout
        ...>

        <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize" />

        <android.support.design.widget.TabLayout
            ...>
    </android.support.design.widget.AppBarLayout>

    <android.support.design.widget.NavigationView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/view_head"
        app:menu="@menu/navigation_menu" />
</android.support.v4.widget.DrawerLayout>

navigation_menu.xml

2bdcb95534cd8a23ad0a1cd8c6127752c00.jpg

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/id_01"
            android:icon="@drawable/ic_home"
            android:title="一"
            />
        <item
            android:id="@+id/id_02"
            android:icon="@drawable/ic_home"
            android:title="二"
            />
        <item
            android:id="@+id/id_03"
            android:icon="@drawable/ic_home"
            android:title="三"
            />
    </group>

    <item android:title="More">
        <menu>
            <item
                android:id="@+id/id_04"
                android:title="Setting"
                android:icon="@mipmap/ic_launcher"
                />
        </menu>
    </item>
</menu>

594af10c8bb0c70dac155839da1e188dba7.jpg

8.CoordinatorLayout 协调布局

<android.support.design.widget.CoordinatorLayout ...>

    <android.support.design.widget.AppBarLayout
        ...>

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways"
            app:title="ToolBar" />

        <android.support.design.widget.TabLayout
            ...
            app:layout_scrollFlags="scroll|enterAlways"
            >

            <android.support.design.widget.TabItem
                ...
                android:text="TabLayout" />
        </android.support.design.widget.TabLayout>

        <ImageView
            app:layout_scrollFlags="scroll|enterAlways"
            ... />
    </android.support.design.widget.AppBarLayout>

    <!--嵌套滚动视图 RecycleView NestedScrollView-->
    <android.support.v4.widget.NestedScrollView
        ...
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        >

        <LinearLayout
            ...
            android:orientation="vertical">

            <TextView
                ...
                android:layout_margin="20dp"
                android:text="1234567" />

            <TextView ... />

            <TextView ... />

        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
<string name="appbar_scrolling_view_behavior" translatable="false">android.support.design.widget.AppBarLayout$ScrollingViewBehavior</string>

1b7cf75938cc201c461842e2b0bfe997fb6.jpg

9.CollapsingToolBarLayout 折叠布局

<android.support.design.widget.CoordinatorLayout ...>

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        ...>

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:theme="@style/ThemeOverlay.AppCompat.Dark"
            app:contentScrim="@color/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
            app:title="TEST">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:src="@drawable/image"
                app:layout_collapseMode="parallax" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
                app:layout_collapseMode="pin"/>


        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        ...>

        ...
    </android.support.v4.widget.NestedScrollView>


    <android.support.design.widget.FloatingActionButton
        android:src="@drawable/ic_home"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/appbar"
        app:layout_anchorGravity="bottom|center"
        android:layout_margin="10dp"
        />
</android.support.design.widget.CoordinatorLayout>

c9665930390cc0590c67d2a89e767f0b8fc.jpgbc97fe179ccdc10798b8b93915493bd8483.jpg

10.CoordinatorLayout.Behavior之move

<android.support.design.widget.CoordinatorLayout ...>

    <TextView
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_gravity="left"
        android:background="#00d0ff"
        android:gravity="center"
        android:onClick="move"
        android:text="第一个"
        android:textColor="#ffffff" />

    <TextView
        android:onClick="move"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_gravity="center"
        android:background="#ff9900"
        android:gravity="center"
        android:text="第二个"
        android:textColor="#ffffff"/>

    <TextView
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_gravity="right"
        android:background="#ff9900"
        android:gravity="center"
        android:text="第三个"
        android:textColor="#ffffff"
        app:layout_behavior="com.coordinatorLayout_behavior.MoveBehavior" />

</android.support.design.widget.CoordinatorLayout>

128e8d63e143f28edce088d60c0d270f9b8.jpg

public class MoveBehavior extends CoordinatorLayout.Behavior<TextView>{

    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

<android.support.design.widget.CoordinatorLayout ...>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:background="#ff9900">

        <LinearLayout
            ...>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_margin="10dp"
                android:gravity="center"
                android:text="滚动"
                android:textColor="#ffffff" />
            ...
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
    <android.support.v4.widget.NestedScrollView
        android:layout_gravity="right"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:background="#009dff"
        app:layout_behavior="com.coordinatorLayout_behavior.ScrollBehavior">

        <LinearLayout
            ...>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_margin="10dp"
                android:gravity="center"
                android:text="滚动"
                android:textColor="#ffffff" />
            ...
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
public class ScrollBehavior extends CoordinatorLayout.Behavior<View>{
    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.BottomNavigation 底部导航

0bb9f6c941db26eca8954b12c46e9d59dc6.jpg07fa2b683ea48f90f6c5bf818d92925a234.jpg

f19a0e000cf332cd171733a4b8b5287f733.jpg222ad897a5361ac8307f89ec08c548c7660.jpg

334ff1dbd8a63baecb527440a0e991bbed4.jpg35d33a36c83baefbddd1bdf6315bed8b158.jpg

e83da1fd72e9d9a1491c92b167c55077528.jpg66cb1fafe90bd6c5e1592b48aadf7424d6f.jpg

13.StyleColor

d2c9e3adc219aeda971e122bec56c3edf52.jpg

转载于:https://my.oschina.net/glfei/blog/2960791

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值