《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”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值