首页 > 其他分享 >Android(Lollipop/5.0) Material Design(一) 简介

Android(Lollipop/5.0) Material Design(一) 简介

时间:2022-12-06 10:06:59浏览次数:45  
标签:5.0 动画 Material Design new android View RecyclerView view


官网地址:https://developer.android.com/intl/zh-tw/design/material/index.html

使用Material Design 需要api21,即Lollipop/5.0以上

Material Design 为应用提供了:一个新的主题,一些组合View的新Widget,一些自定义阴影和动画的新Api

Material 主题

在manifest.xml 中<... android:theme="@android:style/Theme.Material" /> 提示一下有很多相关的主题

Lists和Cards

5.0提供了两个新的Widget,它们使用了Material Design 的style和animation:

列表式:RecyclerView 一个更可插拔式的ListView,它支持不同的布局类型,并且性能有了改进。


卡片式:CardView 一个能让你在其内显示重要信息,并保持连贯的视觉和感觉的卡片。

它两位于 sdk/extras/android/support/v7/cardview 和 sdk/extras/android/support/v7/RecyclerView

View的阴影

View现在除了x、y属性外还有z,z代表一个view的仰角(elevation, 姑且这么翻译吧)

z越大,阴影越大;z越大,view会出现在其他view的顶部

动画

新的动画Api,让你在UI控件里能创建触摸反馈,改变View的状态,切换activity的一系列自定义动画

具体有:

响应View的touch事件的触摸反馈动画

隐藏和显示View的循环展示动画

两个Activity间的切换动画

更自然的曲线运动的动画

使用View的状态更改动画,能改变一个或多个View的属性

在View的状态更改时显示状态列表动画

这些new animations Api,已内置在标准Widget中,如Button。在自定义view时也可使用这些api

图片

可伸缩的矢量图片不会丢失清晰度,并且单一颜色的app-icon是完美的

可定义一个bitmap作为透明度(alpha)和运行时的颜色

可对一个bitmap image取色,会取出它比较显眼的颜色


附RecyclerView的例子:


​​


1. import android.app.Activity;  
2. import android.os.Bundle;
3. import android.support.v7.widget.GridLayoutManager;
4. import android.support.v7.widget.RecyclerView;
5. import android.support.v7.widget.RecyclerView.LayoutParams;
6. import android.view.LayoutInflater;
7. import android.view.ViewGroup;
8. import android.widget.TextView;
9.
10. public class RecyclerViewActivity extends Activity {
11. /*
12. * recyclerview提供这些内置的布局管理器:
13. * linearlayoutmanager 显示垂直滚动列表或水平的项目。
14. * gridlayoutmanager 显示在一个网格项目。
15. * staggeredgridlayoutmanager 显示在交错网格项目。
16. * 自定义的布局管理器,需要继承recyclerview.layoutmanager类。
17. *
18. * add/remove items时的动画是默认启用的。
19. * 自定义这些动画需要继承RecyclerView.ItemAnimator,并实现RecyclerView.setItemAnimator()
20. */
21. private RecyclerView mRecyclerView;
22. private RecyclerView.Adapter mAdapter;
23. private RecyclerView.LayoutManager mLayoutManager;
24. private String[] myDataset;
25.
26. @Override
27. protected void onCreate(Bundle savedInstanceState) {
28. super.onCreate(savedInstanceState);
29.
30. setContentView(R.layout.recycler_view);
31. mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
32.
33. // use this setting to improve performance if you know that changes
34. // in content do not change the layout size of the RecyclerView
35. true);
36.
37. // use a linear layout manager
38. // mLayoutManager = new LinearLayoutManager(this);
39.
40. // mLayoutManager = new GridLayoutManager(this, 3, GridLayoutManager.VERTICAL, true);
41. //true 表示,将layout内容反转
42. new GridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false);
43. //HORIZONTAL 横向滚动显示内容 VERTICAL纵向
44. // mLayoutManager = new GridLayoutManager(this, 3, GridLayoutManager.HORIZONTAL, false);
45.
46. //方向也是指示滚动方向,例子中横向开头的数据交错了一点, 纵向的无交错
47. // mLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.HORIZONTAL);
48. // mLayoutManager = new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL);
49.
50. mRecyclerView.setLayoutManager(mLayoutManager);
51. // mRecyclerView.setLayoutManager(new MyLayoutMnager()); //数据不显示,可能还需要重写什么东西。。
52.
53. // specify an adapter (see also next example)
54.
55. setDatas();
56. new MyAdapter(myDataset);
57. mRecyclerView.setAdapter(mAdapter);
58. }
59.
60. private void setDatas() {
61. int len = 200;
62. new String[len];
63. for (int i = 0; i < len; i++) {
64. switch (i%3) {
65. case 0:
66. "中国" + i;
67. break;
68. case 1:
69. "美国" + i;
70. break;
71. case 2:
72. "澳大利亚" + i;
73. break;
74. }
75. }
76. }
77.
78. class MyLayoutMnager extends RecyclerView.LayoutManager {
79.
80. @Override
81. public LayoutParams generateDefaultLayoutParams() {
82. new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
83. 5;
84. return params;
85. }
86. }
87.
88. class MyAdapter extends RecyclerView.Adapter<ViewHolder> {
89. private String[] mDataset;
90.
91. // Provide a reference to the views for each data item
92. // Complex data items may need more than one view per item, and
93. // you provide access to all the views for a data item in a view holder
94.
95. // Provide a suitable constructor (depends on the kind of dataset)
96. public MyAdapter(String[] myDataset) {
97. mDataset = myDataset;
98. }
99.
100. // Create new views (invoked by the layout manager)
101. @Override
102. public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
103. // create a new view
104. TextView tv = (TextView) LayoutInflater.from(parent.getContext())
105. false);
106. // set the view's size, margins, paddings and layout parameters
107. //...
108. new ViewHolder(tv); //构建一个ViewHolder
109. return vh;
110. }
111.
112. // Replace the contents of a view (invoked by the layout manager)
113. @Override
114. public void onBindViewHolder(ViewHolder holder, int position) {
115. // - get element from your dataset at this position
116. // - replace the contents of the view with that element
117. holder.mTextView.setText(mDataset[position]);
118.
119. }
120.
121. // Return the size of your dataset (invoked by the layout manager)
122. @Override
123. public int getItemCount() {
124. return mDataset.length;
125. }
126. }
127.
128. static class ViewHolder extends RecyclerView.ViewHolder {
129. // each data item is just a string in this case
130. public TextView mTextView;
131. public ViewHolder(TextView v) {
132. super(v);
133. mTextView = v;
134. }
135. }
136. }

标签:5.0,动画,Material,Design,new,android,View,RecyclerView,view
From: https://blog.51cto.com/u_11407799/5914561

相关文章

  • Android(Lollipop/5.0) Material Design(六) 自定义动画
    官网地址:https://developer.android.com/intl/zh-tw/training/material/animations.html动画在Material设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性。M......
  • RocketMQ 5.0 可观测能力升级:Metrics 指标分析
    作者:玄珏​从消息的生命周期看可观测能力在进入主题之前先来看一下RocketMQ生产者、消费者和服务端交互的流程:messageproduceandconsumeprocessRocketMQ的消息是按照......
  • RocketMQ 5.0 可观测能力升级:Metrics 指标分析
    作者:玄珏从消息的生命周期看可观测能力在进入主题之前先来看一下RocketMQ生产者、消费者和服务端交互的流程:messageproduceandconsumeprocessRocketMQ的消息是......
  • Affinity Publisher出版排版软件,搭配 Affinity Designer 和 Affinity Photo使用更佳
    Mac排版神器是什么?AffinityPublisher中文版是创意软件工作室Serif旗下的一款桌面排版应用,可以帮助专业设计人员在每一版面、页面、杂志、书籍和数字出版物中实现最佳的......
  • Ant Design Pro 脚手架Eslint+Prettier配合使用
    AntDesignPro脚手架集成了Eslint与Prettier,但Eslint与Prettier还没形成关联性,就是他们之间各玩各的,现在需要他们之间关联,就是当Prettier格式出现问题时,eslint会报相应的......
  • arco design vue 表单自定义验证
    不知道为啥,官方文档里竟然没写...直接上代码template里<a-form-itemfield="repeatPassword":rules="[{validator:validateRepeatPassword,trigger:'change'}]"......
  • Ant Design Pro 脚手架精简
    AntDesignPro是一个开箱即用的中台前端/设计解决方案,相信很多企业都在用这个脚手架。其脚手架集成了非常多的功能,把工作中需要用到的几乎所有都集成到了这里,这导致该脚......
  • ant-design-vue
    vue3引入ant-design-vueUI组件安装npmi--saveant-design-vue@next-S在main.js全局引入importAntdfrom'ant-design-vue';import'ant-design-vue/dist/an......
  • Altium Designer电路设计软件下载
    关注微信公众号【工控羊】或者微信号【gksheep】,微信公众号后台输入数字编号【0010】即可获取下载链接。......
  • Ant Design Pro 学习 (2) - 实现登录功能
    AntDesignPro学习(2)-实现登录功能1.前言我的计划是一点点修改需要用到的代码,其余的尽量先不动,免得在一开始就陷入调试代码的灾难中。2.正文项目自带的登录API......