Metail Design各个控件(二)
前言:
? SDK更新的歷史上幾個特別重要的版本14(4.0)、19(4.4)、21(5.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() {@Overridepublic void onRefresh() {Log.i(TAG, "onRefresh: 進行中......."+Thread.currentThread().getName());new Thread(new Runnable() {@Overridepublic void run() {try {Thread.currentThread().sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}runOnUiThread(new Runnable() {@Overridepublic 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.LinearLayoutCompatandroid: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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void click(View view, int position, String text) {Toast.makeText(MainActivity.this, "點擊--"+text, Toast.LENGTH_SHORT).show();goActivity(position);}});}?
?
?
?
轉載于:https://www.cnblogs.com/jeffery336699/p/9296002.html
總結
以上是生活随笔為你收集整理的Metail Design各个控件(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反射(操作MetaData)
- 下一篇: IDE安装Lombok插件提高开发效率