版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android中怎么构建一个MaterialDesign应用
这篇文章将为大家详细讲解有关Android中怎么构建一个MaterialDesign应用,文章内容质量较高,因此在下分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.Toolbar1.基本的ToolbarToolbar控件是由appcompat-v7库提供的,使用需要添加依赖:compile
'com.android.support:appcompat-v7:25.3.1'我们使用Toolbar来替代ActionBar,因此需要指定一个不带ActionBar的主题,通常有Theme.AppCompat.NoActionBar(深色)主题或者Theme.AppCompat.Light.NoActionBar(淡色)主题这两种主题可选。Theme:<!--
Base
application
theme.
-->
<style
name="AppTheme"
parent="Theme.AppCompat.Light.NoActionBar">
<!--
Toolbar的颜色
-->
<item
name="colorPrimary">@color/colorPrimary</item>
<!--
通知栏的颜色
-->
<item
name="colorPrimaryDark">@color/colorPrimaryDark</item>
<!--
悬浮图标等颜色,更多的表达了一种强调的意思,比如一些控件的选中状态也会使用该颜色
-->
<item
name="colorAccent">@color/colorAccent</item>
</style>Layout:<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</android.support.design.widget.AppBarLayout>AppBarLayout是一个垂直方向的LinearLayout,它在内部做了很多滚动事件的封装,并应用了一些MaterialDesign的设计理念,AppBarLayout解决了在FrameLayout中Toolbar被遮挡的问题。Activity:Toolbar
toolbar
=
(Toolbar)
findViewById(R.id.toolbar);
setSupportActionBar(toolbar);2.RecyclerView向上滚动隐藏ToolbarToolbar添加一行代码app:layout_scrollFlags="scroll|enterAlways|snap"即可。Layout:<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways|snap"/>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>app:layout_behavior="@string/appbar_scrolling_view_behavior"属性则保证了RecyclerView遮挡Toolbar的问题。2.悬浮按钮和可交互提示1.FloatingActionButtonFloatingActionButton是由designsupport库提供的,使用需要添加依赖:compile
'com.android.support:design:25.3.1'Layout:<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:src="@drawable/ic_circle"/>2.SnackbarSnackbar是由designsupport库提供的。Snackbar的第一个参数需要传入一个View,可以是当前界面布局的任意一个View,然后会使用这个View来自动查找最外层的布局,用于展示Snackbar。Activity:Snackbar.make(view,
"This
is
Snackbar.",
Snackbar.LENGTH_SHORT)
//
设置动作
.setAction("ok",
new
View.OnClickListener()
{
@Override
public
void
onClick(View
view)
{
Toast.makeText(context,
"onClick",
Toast.LENGTH_SHORT);
}
}).show();不过有一个bug,Snackbar和悬浮按钮同时使用并且悬浮按钮在界面右下角时,弹出的Snackbar会将悬浮按钮给遮住,这种用户体验是不友好的,要解决这个问题只需要借助CoordinatorLayout就可以轻松解决。3.CoordinatorLayoutSnackbar是由designsupport库提供的,CoordinatorLayout可以说是加强版的FrameLayout,CoordinatorLayout可以监听其所有子控件的各种事件,然后自动帮我们做出最为合理的响应,就比如刚才说的Snackbar那个bug,借助CoordinatorLayout,就可以使得Snackbar向上偏移,从而确保不会被Snackbar遮挡住。Layout:<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:src="@drawable/ic_circle"/>
</android.support.design.widget.CoordinatorLayout>另外,由于CoordinatorLayout本身就是加强版的FrameLayout,所以替换FrameLayout也不会有任何的副作用。3.卡片式布局1.CardViewCardView控件是由cardview-v7库提供的,用于实现一个立体的卡片,提供了圆角、阴影等效果。使用需要添加依赖:compile
'com.android.support:cardview-v7:25.3.1'Layout:<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius
=
"10dp"
app:elevation="5dp"
app:cardBackgroundColor="#71C3DE">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="20dp"
android:text="CardView控件,可以设置阴影和圆角效果"/>
</android.support.v7.widget.CardView>运行后效果图如下:4.全透明状态栏需要Android5.0及以上。public
class
MainActivity
extends
AppCompatActivity
{
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
if(Build.VERSION.SDK_INT
>=
Build.VERSION_CODES.LOLLIPOP)
{
Window
window
=
getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
|
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
}
setContentView(R.layout.activity_main);
}
}5.Material效果Dialog1.AlertDialog样式效果向下兼容到Android2.1new
android.support.v7.app.AlertDialog.Builder(context)
.setTitle("AlertDialog")
.setMessage("Something
importan
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房产投资期权合同(2篇)
- 2024年粉末冶金自润滑材料合作协议书
- 2024年辐射自动观测仪项目建议书
- 2024年中枢兴奋药项目建议书
- 2024年淡水捕捞产品项目合作计划书
- 2024年皮革化学品:浸水助剂项目建议书
- 汽车销售居间服务合同
- 2024版个人门面房出租合同
- 2024版服装订购合同范本-0
- 2024版合同管理机构
- 消费者购买行为模式与购买决策
- 西方思想经典导读知到章节答案智慧树2023年湖南师范大学
- 2023年财会金融-银行业金融机构现金从业人员反假货币理论知识考试历年真题(精准考点)带答案
- 中国画枇杷与茶壶的组合画法
- 新版部编人教版二年级下册道德与法治学做“快乐鸟”教案3套
- 我国成人重症肺炎临床实践专家共识指南解读
- 运动会田赛裁判长工作细则
- 光伏whs质量控制记录汇总表
- 公司催款函范文公司催款函
- 小学英语全国优质课说课一等奖《Then and now》模拟展示课PPT精品课件
- GB/T 14823.1-1993电气安装用导管特殊要求-金属导管
评论
0/150
提交评论