android进阶之路读书笔记 - android5.0新特性之CardView


源码地址

1.CardView概念

CardView继承自FramLayout,可以设置圆角和阴影,能够使控件更加立体性.

2.CardView的基本属性

android:cardBackgroundColor 设置背景
android:cardCornerRadius 设置圆角
app:cardElevation 设置阴影大小
app:cardMaxElevation 设置阴影的最大高度
app:contentPadding 内容距离边界的距离(ps:padding在CardView中不生效)
app:contentPaddingXXX 设置局部的内边距

3.app:cardUseCompatPadding和app:cardPreventCornerOverlap属性

  • app:cardUseCompatPadding 主要在Android5.0及以上系统上起作用(CardView在5.0以下默认会添加一个额外的padding值);此属性设置为false5.0以上系统不会添加padding,如果为true,则5.0以上系统也会添加padding值,效果会和5.0以下系统一样
    在这里插入图片描述
    在这里插入图片描述
  • app:cardPreventCornerOverlap 主要在Android5.0以下系统起作用(CardView在5.0及以上系统默认会裁剪content来适应圆角);此属性设置为false,不会裁剪content,圆角会被覆盖,如果设置为true,则会裁剪内容,由于5.0以下默认会添加padding值
    在这里插入图片描述在这里插入图片描述

4.仿写的进阶之路上的源码(xml的CardView中没有添加属性)

没有录制gif,来张截图吧
在这里插入图片描述

xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context="com.text.ck.cardview.MainActivity">
    <android.support.v7.widget.CardView
        android:id="@+id/cardView"
        app:cardCornerRadius="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        app:cardBackgroundColor="@color/colorAccent">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/banner_service" />
    </android.support.v7.widget.CardView>

    <SeekBar
        android:id="@+id/sb_1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="控制圆角大小" />

    <SeekBar
        android:id="@+id/sb_2"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="控制阴影大小" />

    <SeekBar
        android:id="@+id/sb_3"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="控制图片间距" />


</LinearLayout>

activity

package com.text.ck.cardview;

import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.util.Log;
import android.widget.SeekBar;

public class MainActivity extends AppCompatActivity {

    private SeekBar sb_1;
    private SeekBar sb_2;
    private SeekBar sb_3;
    private CardView cardView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cardView = (CardView) findViewById(R.id.cardView);
        sb_1 = (SeekBar) findViewById(R.id.sb_1);
        sb_2 = (SeekBar) findViewById(R.id.sb_2);
        sb_3 = (SeekBar) findViewById(R.id.sb_3);
        sbClick();
    }

    private void sbClick() {
        sb_1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                Log.d("tag",String.valueOf(i));
                cardView.setRadius(i);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
        sb_2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                Log.d("tag",String.valueOf(i));
                cardView.setCardElevation(i);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
        sb_3.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                Log.d("tag",String.valueOf(i));
                cardView.setContentPadding(i,i,i,i);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值