• Metail Design各个控件(二)


    前言:

       SDK更新的历史上几个特别重要的版本144.0194.4215.0,这是有差异的就放到各自的版本中,没有差异的就放到value中,这里是版本兼容开发.

    举个列子:

      这里底部导航栏的颜色属性只有5.x以上才有,所以最好写到values-21里面

    <!--底部导航栏颜色,这里只有5.x以上的才能设置,所以最好放到API 21里,低于这个的不起作用-->
    <item name="android:navigationBarColor">@color/colorPrimaryDark</item>

     

    Metail Design代表控件:

    1.android.support.v7.app.AlertDialog

    效果比AlertDialog好看点,如图:

     

    2.风格可以尽量用AppCompat类型的风格:

    1 <ProgressBar
    2  android:layout_width="match_parent"
    3  android:layout_height="wrap_content"
    4  style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    5  android:id="@+id/progressbar_horizontal"
    6  android:max="100"
    7  android:progress="80"
    8  />

     

     style="@style/Widget.AppCompat.ProgressBar.Horizontal"就是采用的材料风格

     

     

     3.android.support.v4.widget.SwipeRefreshLayout

     

    最好里面包裹一层 ScrollView,这样才有滑动效果,一下是简单用法

     

    mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    Log.i(TAG, "onRefresh: 进行中......."+Thread.currentThread().getName());
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                Thread.currentThread().sleep(3000);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    mSwipeRefreshLayout.setRefreshing(false);
                                }
                            });
                        }
                    }).start();
                }
            });
            mSwipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);
            mSwipeRefreshLayout.setColorSchemeColors(Color.RED,Color.GREEN,Color.BLUE);
            mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(Color.YELLOW);
            mSwipeRefreshLayout.setDistanceToTriggerSync(110);

     

     

     4.LinearLayoutCompat

     替代LinearLayout,可以给每个控件加一层间隔线

     

    <android.support.v7.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                app:divider="@drawable/abc_list_divider_mtrl_alpha"
                app:showDividers="middle"
                >

    这里也可以采用appCompat里面的资源,如@drawable/abc_list_divider_mtrl_alpha,

     divider和showDividers是LinearLayoutCompat的特有属性,效果如图:

     

     

    5.ListPopupWindow

    private void showListPopWindows() {
            final String[]items={"条目0","条目1","条目2","条目3","条目4","条目5","条目6","条目7"};
            final ListPopupWindow listPopupWindow = new ListPopupWindow(this);
            listPopupWindow.setAdapter(new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,items));
            listPopupWindow.setAnchorView(mBtShowPup);//设置锚点
            listPopupWindow.setWidth(300);
            listPopupWindow.setHeight(500);
            listPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    Toast.makeText(AppCompatWigetActivity.this, "点击--"+items[i], Toast.LENGTH_SHORT).show();
                    listPopupWindow.dismiss();
                }
            });
            listPopupWindow.show();
        }

     

     展示效果如图:

     

     

     6.PopupMenu

     在res下面定义menu,编写item

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/action_setting" android:orderInCategory="100"  
          android:icon="@android:drawable/ic_menu_set_as" android:title="设置" ></item>
        <item android:id="@+id/action_share" android:orderInCategory="100"
          android:icon="@android:drawable/ic_menu_share" android:title="分享" ></item>
        <item android:id="@+id/action_add" android:orderInCategory="100"
          android:icon="@android:drawable/ic_menu_add" android:title="添加" ></item>
    </menu>

     

    private void showMenu() {
            PopupMenu popupMenu = new PopupMenu(this, mBtShowMenu, Gravity.CENTER);
            popupMenu.getMenuInflater().inflate(R.menu.main,popupMenu.getMenu());
            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()){
                        case R.id.action_setting:
                            Toast.makeText(AppCompatWigetActivity.this, "点击---"+item.getTitle(), Toast.LENGTH_SHORT).show();
                            break;
                        case R.id.action_share:
                            Toast.makeText(AppCompatWigetActivity.this, "点击---"+item.getTitle(), Toast.LENGTH_SHORT).show();
                            break;
                        case R.id.action_add:
                            Toast.makeText(AppCompatWigetActivity.this, "点击---"+item.getTitle(), Toast.LENGTH_SHORT).show();
                            break;
                    }
                    return false;
                }
            });
            popupMenu.show();
        }

     

     效果如图所示:

     

     

     7.RecyclerView

    private void initRecyclerView() {
            mList = Arrays.asList(mStrings);
            mRy.setLayoutManager(new GridLayoutManager(this,3));
            mAdapter = new MainRecyclerAdapter(mList);
            mRy.setAdapter(mAdapter);
            mAdapter.setItemClickListener(new MainRecyclerAdapter.ItemClickListener() {
                @Override
                public void click(View view, int position, String text) {
                    Toast.makeText(MainActivity.this, "点击--"+text, Toast.LENGTH_SHORT).show();
                    goActivity(position);
                }
            });
        }

     

     

     

  • 相关阅读:
    [Redis-CentOS7]Redis设置连接密码(九)
    [Redis-CentOS7]Redis数据持久化(八)
    PAT Advanced 1101 Quick Sort (25分)
    PAT Advanced 1043 Is It a Binary Search Tree (25分)
    HTTP协议
    PAT Advanced 1031 Hello World for U (20分)
    自然码双拼快速记忆方案
    macOS 原生输入法设置自然码
    PAT Advanced 1086 Tree Traversals Again (25分)
    PAT Advanced 1050 String Subtraction (20分)
  • 原文地址:https://www.cnblogs.com/jeffery336699/p/9296002.html
Copyright © 2020-2023  润新知