Android之CardView

  在Android5.0之后为我们新增了一个新的控件CardView,CardView是一个卡片布局,布局可以包含圆角和阴影,本质上CardView是一个FrameLayout,因此它作为一个布局容器,可以布局其他的View。

  CardView中常用的属性有:

1、  cardElevation:设置阴影的大小

2、  cardBackgroundColor:卡片布局的背景演示

3、  cardCornerRadius:卡片布局的圆角的大小

4、  conentPadding:卡片布局和内容之间的距离

  先上案例内容,具体无下图所示:

具体使用步骤如下:

第一步添加支持库,具体看参照下图:

第二步,编写布局文件,布局文件具体内容如下:

<?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:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.jredu.blog.CardViewActivity">

    <TextView
        android:id="@+id/radius_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:text="Radius"
        android:textColor="@android:color/black" />

    <SeekBar
        android:id="@+id/corner_radius_seek_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:max="100" />

    <TextView
        android:id="@+id/elevation_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:text="Elevation"
        android:textColor="@android:color/black" />

    <SeekBar
        android:id="@+id/elevation_seek_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:max="50" />

    <TextView
        android:id="@+id/alpha_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:text="Alpha"
        android:textColor="@android:color/black" />

    <SeekBar
        android:id="@+id/alpha_seek_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="255"
        android:progress="255" />

    <TextView
        android:id="@+id/color_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:text="Background"
        android:textColor="@android:color/black" />

    <RadioGroup
        android:id="@+id/select_bg_color_radio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/def"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/cardview_light_background"
            android:checked="true" />

        <RadioButton
            android:id="@+id/red"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/card_red" />

        <RadioButton
            android:id="@+id/blue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/card_blue" />
    </RadioGroup>

    <android.support.v7.widget.CardView
        android:id="@+id/cardView"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_margin="8dp"
        android:clickable="true"
        android:foreground="?android:selectableItemBackground"
        app:cardElevation="10dp"
        app:contentPadding="10dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:id="@+id/face"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:src="@mipmap/ic_launcher" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="15dp"
                android:layout_toRightOf="@id/face"
                android:gravity="center_vertical"
                android:orientation="vertical">

                <TextView

                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="13611111111"
                    android:textColor="@android:color/black"
                    android:textSize="16sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:text="Mobile"
                    android:textColor="@android:color/black"
                    android:textSize="16sp" />
            </LinearLayout>

            <ImageView
                android:id="@+id/msg"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_alignParentRight="true"
                android:src="@mipmap/ic_launcher" />
        </RelativeLayout>
    </android.support.v7.widget.CardView>

</LinearLayout>

第三步,在Activity中编写实现逻辑

public class CardViewActivity extends AppCompatActivity {

    private CardView mCardView;
    private SeekBar mCornerRadiusSeekBar;
    private SeekBar mElevationSeekBar;
    private SeekBar mAlphaSeekBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_card_view);
        mCardView = (CardView)findViewById(R.id.cardView);

        mCornerRadiusSeekBar = (SeekBar) findViewById(R.id.corner_radius_seek_bar);
        mCornerRadiusSeekBar.setProgress((int) mCardView.getRadius());
        mCornerRadiusSeekBar.setOnSeekBarChangeListener(SeekBarChangeListener);

        mElevationSeekBar = (SeekBar) findViewById(R.id.elevation_seek_bar);
        mElevationSeekBar.setProgress((int) mCardView.getCardElevation());
        mElevationSeekBar.setOnSeekBarChangeListener(SeekBarChangeListener);

        mAlphaSeekBar = (SeekBar) findViewById(R.id.alpha_seek_bar);
        mAlphaSeekBar.setProgress((int) ViewCompat.getAlpha(mCardView) * 255);
        mAlphaSeekBar.setOnSeekBarChangeListener(SeekBarChangeListener);

        RadioGroup rb = (RadioGroup) findViewById(R.id.select_bg_color_radio);
        rb.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                //设置背景
                mCardView.setCardBackgroundColor(
                        getResources().getColor(getColorId(checkedId)));
            }
        });
    }

    private SeekBar.OnSeekBarChangeListener SeekBarChangeListener = new SeekBar.OnSeekBarChangeListener(){
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            //设置圆角
            if (mCornerRadiusSeekBar.getProgress() != mCardView.getRadius()) {
                mCardView.setRadius(mCornerRadiusSeekBar.getProgress());
            }
            //设置阴影
            if (mElevationSeekBar.getProgress() != mCardView.getCardElevation()) {
                mCardView.setCardElevation(mElevationSeekBar.getProgress());
            }
            //设置透明度
            ViewCompat.setAlpha(mCardView, mAlphaSeekBar.getProgress() / 255f);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    };

    private int getColorId(int id) {
        switch (id) {

            case R.id.red:
                return R.color.card_red;
            case R.id.blue:
                return R.color.card_blue;

            default:
                return R.color.cardview_light_background;
        }
    }
}

作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

技术咨询:

时间: 2024-10-12 00:13:47

Android之CardView的相关文章

Android RecyclerView+CardView实现瀑布流效果

所需要的库及库工程 库: android-support-v7-recyclerview.jar :v21.x android-support-v4.jar :v21.x 库工程: android-support-v7-appcompat:v21.x android-support-v7-cardview 注意:cardView必须使用库工程,而不能使用jar包,原因是其引用了自定义属性 但是,如果必须要使用cardView而不导入工程,建议使用cardview源码,主要步骤如下: ①将自定义a

Android开发--CardView使用

Android5.0中向我们介绍了一个全新的控件–CardView,从本质上看,可以将CardView看做是FrameLayout在自身之上添加了圆角和阴影效果.请注意:CardView被包装为一种布局,并且经常在ListView和RecyclerView的Item布局中,作为一种容器使用. CardView应该被使用在显示层次性的内容时:在显示列表或网格时更应该被选择,因为这些边缘可以使得用户更容易去区分这些内容. 使用CardView 首先,假设你的布局如同下面的形式: <FrameLayo

Android RecycleView + CardView 控件简析

今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleView的“列表”样式,Support包默认包含了:LinearLayoutManager  横向或纵向的滚动列表. GridLayoutManager  网格列表.StaggeredGridLayoutManager  交错的网格列表. 2.Adapter负责处理RecycleView的数据和样式 3

【翻译】Android RecyclerView CardView

Android L最新支持包推出两个UI控件RecycleView和CardView.RecyclerView是更先进,更灵活的ListView,这是一个很大的进步,因为ListView是UI组件中最常用的控件之一.此外,CardView控件是一个全新的组件.在这篇教程中将解释如何使用这两个控件以及如何混合使用它们,首先来来深入了解一下RecyclerView. RecyclerView 正如前面说RecyclerView是更加灵活的ListView,尽管它引进了一些复杂的东西.我们都知道如何在

android-cardview简单使用

cardview是5.0以上版本的控件,是一个卡片式布局,继承framlayout,但是可以使用兼容包老兼容4.0以上的设备. 测试环境是android studio 1.加入依赖: <span style="font-size:14px;">compile 'com.android.support:cardview-v7:21.0.3'</span> 2.写布局: <span style="font-size:14px;">&l

【Android】CardView

官方地址 引入v7库 创建卡片 官方地址 https://developer.android.com/reference/android/support/v7/widget/CardView https://developer.android.com/guide/topics/ui/layout/cardview 引入v7库 原文: The CardView widget is part of the v7 Support Libraries. 如果要使用,这个组件,就要引入v7支持库. imp

【FastDev4Android框架开发】实例解析之SwipeRefreshLayout+RecyclerView+CardView(三十五)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50087873 本文出自:[江清清的博客] (一).前言: 作为Android L开始,Google更新了新控件RecyclerView和CardView,这两个控件在之前的文章中已经做了详细介绍和使用,同时在前面还对下拉刷新组件SwipeRefreshLayout进行相关讲解.本来该专题不在更新了,正好昨天有一个群友问到了怎么样结合SwipeRefreshLayou

【FastDev4Android框架开发】CardView完全解析与RecyclerView结合使用(三十二)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50000733 本文出自:[江清清的博客] (一).前言: 作为Android L开始,Google更新的除了RecyclerView之外的另一控件就是CardView,其中Google官方应用Google Now就采用了CardView控件,下面我们详细了解一下CardView和使用方法. (二).基本介绍: CardView继承自FrameLayout,可以让我们

【Android】10.4 卡片视图

分类:C#.Android.VS2015: 创建日期:2016-02-19 一.简介 Android 从5.0开始包含了一个全新的卡片视图小部件,这个新的小部件默认就像一张带有圆角和轻微阴影的白色卡片,称为卡片视图. 1.需要安装Xamarin.Android.Support.v7.CardView软件包 CardView是由Android Support v7支持库提供的,用C#编写Android应用程序时,要使用CardView,项目中必须包括Xamarin.Android.Support.