【移动应用开发技术】Android中怎么构建一个Material Design应用_第1页
【移动应用开发技术】Android中怎么构建一个Material Design应用_第2页
【移动应用开发技术】Android中怎么构建一个Material Design应用_第3页
【移动应用开发技术】Android中怎么构建一个Material Design应用_第4页
【移动应用开发技术】Android中怎么构建一个Material Design应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论