2-VVI-材料设计之CardView

简介: 零、前言[1].CardView extends FrameLayout[2].一个带圆角和阴影的FrameLayout,FrameLayout怎么用,它就怎么用[3].

零、前言

[1].CardView extends FrameLayout
[2].一个带圆角和阴影的FrameLayout,FrameLayout怎么用,它就怎么用
[3].依赖implementation 'com.android.support:cardview-v7:26.1.0'

CardView.gif

一、使用:

1.属性一览:
  app:cardBackgroundColor      背景颜色
  app:cardCornerRadius         圆角大小
  app:cardElevation            z轴阴影高度
  app:cardMaxElevation         z轴最大高度值

  app:contentPadding           内容与边距的间隔
  app:contentPaddingLeft       内容与左边的间隔
  app:contentPaddingTop        内容与顶部的间隔
  app:contentPaddingRight      内容与右边的间隔
  app:contentPaddingBottom     内容与底部的间隔    

  app:paddingStart             内容与边距的间隔起始
  app:paddingEnd               内容与边距的间隔终止

  app:cardUseCompatPadding     设置内边距,在API21及以上版本和之前的版本仍旧具有一样的计算方式
  app:cardPreventConrerOverlap 在API20及以下版本中添加内边距,这个属性为了防止内容和边角的重叠
  注意:CardView中使用android:background设置背景颜色无效。
2.可在style里抽一下常用的卡片样式:
    <!--cardView常用配置-->
    <style name="MyBaseCard" parent="@style/CardView.Light">
        <item name="cardPreventCornerOverlap">false</item>
        <item name="cardUseCompatPadding">true</item>
        <item name="cardElevation">9dp</item>
        <item name="cardCornerRadius">6dp</item>

        <item name="android:foreground">?attr/selectableItemBackground</item>
        <item name="cardBackgroundColor">#A0BDF4</item>
    </style>
3.使用:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.CardView
        android:id="@+id/id_cv"
        style="@style/MyBaseCard"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:layout_marginTop="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.441"
        app:layout_constraintStart_toStartOf="parent">

        <LinearLayout
            android:layout_width="200dp"
            android:layout_height="230dp"
            android:orientation="vertical">
            <ImageView
                android:layout_gravity="center"
                android:id="@+id/id_img"
                android:layout_width="wrap_content"
                android:layout_height="180dp"
                android:padding="5dp"
                android:src="@mipmap/c1"/>
            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#E8E9EA"
                android:gravity="center"
                android:padding="8dp"
                android:text="红红战士"
                android:textColor="#FF0000"/>
        </LinearLayout>
    </android.support.v7.widget.CardView>

</android.support.constraint.ConstraintLayout>
4.Activity:
public class V02_CardActivity extends AppCompatActivity {

    @BindView(R.id.id_cv)
    CardView mIdCv;
    @BindView(R.id.id_img)
    ImageView mIdImg;
    int count = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a2_card);
        ButterKnife.bind(this);
        mIdCv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                runAnima();
            }
        });
    }

    private void runAnima() {
        mIdCv.animate().translationX(100 + count).setDuration(1000).start();
        count += 10;
    }
}

二、后记
1.阴影Padding
CardView会自动添加一些额外的padding空间来绘制阴影部分,
这也导致了以V21为界的不同系统上CardView的尺寸大小不同
app:cardUseCompatPadding="true"适配
2.圆角覆盖:剪裁情况
app:cardPreventCornerOverlap="false"适配
3.点击涟漪
android:foreground="?android:attr/selectableItemBackground"

后记、

1.声明:

[1]本文由张风捷特烈原创,转载请注明
[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力

2.连接传送门:

更多安卓技术欢迎访问:安卓技术栈
我的github地址:欢迎star
简书首发,腾讯云+社区同步更新
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com

3.联系我

QQ:1981462002
邮箱:1981462002@qq.com
微信:zdl1994328

4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
公众号.jpg
相关文章
|
存储 监控 NoSQL
MongoDB优化的几点原则
这篇文章讨论了MongoDB优化的一些原则,包括查询优化、热数据大小、文件系统选择、硬盘选择、查询方式优化、sharding key设计和性能监控。
380 1
|
信息无障碍 数据安全/隐私保护
buuctf-misc-25.假如给我三天光明
buuctf-misc-25.假如给我三天光明
|
监控 Java 测试技术
JVM 性能调优 及 为什么要减少 Full GC
JVM 性能调优 及 为什么要减少 Full GC
324 4
|
10月前
|
监控 安全 网络安全
静态长效代理IP的技术创新与网络安全体现在哪些方面?
随着数字化发展,网络安全和隐私保护成为核心需求。静态长效代理IP通过智能路由、动态IP池管理、加密技术、负载均衡及API集成等创新,提升数据传输速度与安全性。它在信息安全保护、访问控制、数据传输保护及网络监控等方面发挥重要作用,为各行业提供高效、安全的网络解决方案,应用前景广阔。
179 5
|
分布式计算 监控 大数据
大数据-114 Flink DataStreamAPI 程序输入源 自定义输入源 Rich并行源 RichParallelSourceFunction
大数据-114 Flink DataStreamAPI 程序输入源 自定义输入源 Rich并行源 RichParallelSourceFunction
228 0
|
机器学习/深度学习 编解码 人工智能
OpenAI Sora:“60s超长长度”、“超强语义理解”、“世界模型”。浅析文生视频模型Sora以及技术原理简介
OpenAI,永远快别人一步!!!! 像ChatGPT成功抢了Claude的头条一样,这一次,谷歌核弹级大杀器Gemini 1.5才推出没几个小时,全世界的目光就被OpenAI的Sora抢了去。 100万token的上下文,仅靠一本语法书就学会了一门全新的语言,如此震撼的技术进步,在Sora的荣光下被衬得暗淡无光,着实令人唏嘘。 三个词总结 “60s超长长度”、“单视频多角度镜头”,“世界模型”
563 0
OpenAI Sora:“60s超长长度”、“超强语义理解”、“世界模型”。浅析文生视频模型Sora以及技术原理简介
|
Linux 数据安全/隐私保护
在Linux中,什么是文件权限?什么是rwx权限模型?
在Linux中,什么是文件权限?什么是rwx权限模型?
|
Python
【Python】已解决:(from docx import Document导包报错)ModuleNotFoundError: No module named ‘exceptions’
【Python】已解决:(from docx import Document导包报错)ModuleNotFoundError: No module named ‘exceptions’
1897 0
|
C# 数据安全/隐私保护
ApeForms | C# WinForm窗体控件平滑减速运动
在桌面软件开发中,有时会需要控制窗体或控件移动以实现某些界面效果,比如幻灯片换页、侧面的展开栏等。 通常情况下我们会使用Timer以每隔一段时间修改一下坐标位置的方式来实现目标对象的位移效果,但通过这个方式实现的动效存在几个问题: 匀速运动效果生硬; 运动过程中不便灵活改变运动状态(如侧栏展开一半时令其收起); 动效多时需要创建多个Timer对象,不易管理且占用资源; ApeForms中为控件和窗体提供了平滑运动的扩展方法,很好的解决了这些问题。不仅是坐标的平滑运动,还有控件\窗体尺寸的平滑变化、透明度的平滑变化。允许在变化的中途随时更改目标坐标\尺寸\透明度,且使用共享的Timer
11621 1
ApeForms | C# WinForm窗体控件平滑减速运动
|
Linux
百度搜索:蓝易云【深入解析Linux进程内存:VSS、RSS、PSS、USS及查看方式】
通过以上方法,你可以深入了解Linux进程的内存使用情况,包括VSS、RSS、PSS、USS等指标,帮助你进行性能优化和资源管理。
611 12