《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的主要内容,如果未能解决你的问题,请参考以下文章

《Android群英传》---读书笔记7

《Android群英传》---读书笔记7

《Android群英传》读书笔记---10.2(终篇)

Android群英传神兵利器读书笔记——第三章:Android Studio奇技淫巧

Android群英传笔记系列一view的介绍

Android群英传笔记——摘要,概述,新的出发点,温故而知新,能够为师矣!