《Andorid群英传》---读书笔记10.1
Posted yarsnwoing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Andorid群英传》---读书笔记10.1相关的知识,希望对你有一定的参考价值。
《Andorid群英传》—读书笔记10.1
标签(空格分隔): android中级 读书笔记
Android 5.X 新特性详解
知识点:
Android 5.X UI设计初步
Android 5.X 新增特性分析
12.1 Android 5.X UI 设计初步
12.1.1 设计特点:
1 材料的形态模拟
2 更加真实的动画
3 大色块的使用
12.1.2 Material Design 主题
Material Design 有三种默认的主题可以设置
@android:style/Theme.Material
@android:style/Theme.Material.Light
@adnroid:style/Theme.Material.DarkActionBar
同时Android 5.X提出Color Palette的概念,让开发者可以自己设定系统区域的颜色
,可以通过使用自定义Style的方式来创建自己的Color Palette颜色主题:
<style name="AppTheme" parent="android:Theme.Material">
<!-- ActionBar颜色 -->
<item name="android:colorPrimary">@color/primary</item>
<!-- 状态栏颜色 -->
<item name="android:colorPrimaryDark">@color/primary</item>
<!-- 控件颜色 -->
<item name="android:colorAccent">@color/primary</item>
<!-- 背景色 -->
<item name="android:windowBackground">@color/window_background</item>
<!-- 键盘区域颜色 -->
<item name="android:navigationBarColor">@color/primary</item>
<!--标题栏字体颜色-->
<item name="android:textColorPrimary">@color/primaryTextColor</item>
<!--内容区域字体颜色-->
<item name="android:textColor">@color/primaryTextColor</item>
</style>
12.3 Palette
可以使用Palette来提取颜色,从而让主题能够动态适应当前页面的色调,Android内置了几种色调的种类,如下所示
Vibrant(充满活力的)
Vibrant dark(充满活力的黑)
Vibrant light
Muted(柔和的)
Muted dark
Muted light(柔和的亮)
使用Pattle:
1 引入相应的依赖
在项目列表上点击F4,然后在Module Setting的Dependencies 选项卡中添加com.android.support:palette-v7:21.0.2引用,再重新sync项目
2 传递一个Bitmap对象给Palette,并调用Palette.generate()静态方法或者Palette.generateAsync()来创建一个Palette
3 使用getter方法检索相应的色调
代码示例:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.test);
// 创建Palette对象
Palette.generateAsync(bitmap,
new Palette.PaletteAsyncListener()
@Override
public void onGenerated(Palette palette)
// 通过Palette来获取对应的色调
Palette.Swatch vibrant =
palette.getDarkVibrantSwatch();
// 将颜色设置给相应的组件
getActionBar().setBackgroundDrawable(
new ColorDrawable(vibrant.getRgb()));
Window window = getWindow();
window.setStatusBarColor(vibrant.getRgb());
);
12.4 视图与阴影
12.4.1 阴影效果
在Android 5.X中,Android View增加了一个新的属性—Z,对应垂直方向上的高度变化。Android View的Z由两部分组成,elevation和translationZ(它们都是5.X新引入的特性)。elevation是静态成员,translationZ可以在代码中实现动画效果
Z=elevation+translationZ
可以在XML中使用:
android:elevation=”XXdp”设置View的视图高度
12.5 Tinting和Clipping
Tinting(着色),使用非常简单,只需在XML中使用tint和tintMode属性设置着色效果
Tint通过修改图像的Alpha遮罩来修改图像的颜色,从而达到重新着色的目的。
Clipping(裁剪)
Clipping可以改变一个视图的外形。使用Clipping,首先需要使用ViewOutlineProvider来修改outline,然后再通过setOutlineProvider将outline作用给视图
ViewOutlineProvider viewOutLineProvider=new ViewOutLineProvider()
@Override
public void getOutline(View view,Outline outline)
outline.setRoundRect(0,0,view.getWidth(),view.getHeight,30);
;
view1.setOutlineProvider(viewOutlineProvider);
12.6 列表与卡片
12.6.1 RecyclerView
RecyclerView与ListView相比使用更加方便,效率更加高
使用RecyclerView:
1首先需要引入com.android.support:recycleview-v7:21.0.2依赖。
2 与使用ListView基本相似,需要类似List item的布局,在Material Design中通常与CardView配合使用
3需要一个合适的数据适配器来加载数据,RecycleView已经封装了ViewHodler,只要实现功能就可以了
代码示例:
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
public class RecyclerAdapter
extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder>
private List<String> mData;
public RecyclerAdapter(List<String> data)
mData = data;
public OnItemClickListener itemClickListener;
public void setOnItemClickListener(
OnItemClickListener itemClickListener)
this.itemClickListener = itemClickListener;
public interface OnItemClickListener
void onItemClick(View view, int position);
public class ViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener
public TextView textView;
public ViewHolder(View itemView)
super(itemView);
textView = (TextView) itemView;
textView.setOnClickListener(this);
// 通过接口回调来实现RecyclerView的点击事件
@Override
public void onClick(View v)
if (itemClickListener != null)
itemClickListener.onItemClick(v, getPosition());
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)
// 将布局转化为View并传递给RecyclerView封装好的ViewHolder
View v = LayoutInflater.from(viewGroup.getContext()).inflate(
R.layout.rc_item, viewGroup, false);
return new ViewHolder(v);
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i)
// 建立起ViewHolder中视图与数据的关联
viewHolder.textView.setText(mData.get(i) + i);
@Override
public int getItemCount()
return mData.size();
Google在RecycleView中定义了LayoutManager来帮助开发者更加方便的创建不同的布局
mRecycleView.setLayoutManager(new LinearLayoutManager(RecyclerTest.this));//创建水平布局
mRecycleView.setLayoutManager(new GridLayoutManager(RecycleTest.this));//创建竖直布局
12.6.2 CardView
CardView是一种容器类布局,它提供了卡片这样的一种形式。开发者可以定义卡片的大小与视图高度,并设置圆角的角度。
使用方法:
1引入com.android.support:cardview-v7:21.+依赖
2引入一个新的名字空间—xmlns:card_view=”http://schemas.android.com/apk/res-auto”
3使用属来控制背景色和圆角的角度
card_view:cardBackgroundColor=”@color/cardview_background”
card_view:cardCornerRadius=”8dp”
以上是关于《Andorid群英传》---读书笔记10.1的主要内容,如果未能解决你的问题,请参考以下文章