CardView卡片

效果图

CardView卡片_第1张图片

直接上代码

布局文件activity_card.xml: 相关属性card_view:cardCornerRadius设置圆角的半径, card_view:cardElevation设置阴影的半径, android:scaleType=“centerInside” 将图片的内容完整居中显示,通过按比例缩小原来的size使得图片长(宽)等于或小于ImageView的长(宽), SeekBar拖动进度条。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    android:paddingTop="20dp"
    android:paddingBottom="20dp"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    tools:context=".CardActivity">
    <androidx.cardview.widget.CardView
        android:id="@+id/cv_card"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        card_view:cardCornerRadius="20dp"
        card_view:cardElevation="20dp">
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/aaa"
            android:scaleType="centerInside"/>
    </androidx.cardview.widget.CardView>

    <LinearLayout
        android:layout_marginTop="30dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <SeekBar
            android:id="@+id/sb_card_1"
            android:layout_width="200dp"
            android:layout_height="wrap_content"/>
        <TextView
            android:text="控制圆角大小"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <LinearLayout
        android:layout_marginTop="30dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <SeekBar
            android:id="@+id/sb_card_2"
            android:layout_width="200dp"
            android:layout_height="wrap_content"/>
        <TextView
            android:text="控制阴影大小"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <LinearLayout
        android:layout_marginTop="30dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <SeekBar
            android:id="@+id/sb_card_3"
            android:layout_width="200dp"
            android:layout_height="wrap_content"/>
        <TextView
            android:text="控制图片间距"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>

</LinearLayout>

CardActivity: 代码比较简单就不多做说明

import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import android.os.Bundle;
import android.widget.SeekBar;

public class CardActivity extends AppCompatActivity {
    private CardView mCardView;
    private SeekBar sb1,sb2,sb3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_card);
        initView();//初始化视图
        initListener();//初始化监听
    }

    private void initListener() {
        sb1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            //i 当前的进度值。此值的取值范围为0到max之间。Max为用户通过setMax(int)设置的值,默认为100
            //fromUser 如果是用户触发的改变则返回True
            public void onProgressChanged(SeekBar seekBar, int i, boolean fromUser) {
                //该方法拖动进度条进度改变的时候调用
                mCardView.setRadius(i);//设置圆角的半径
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                //该方法拖动进度条开始拖动的时候调用
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                //该方法拖动进度条停止拖动的时候调用
            }
        });

        sb2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean fromUser) {
                mCardView.setCardElevation(i);//设置阴影的半径
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

        sb3.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean fromUser) {
                mCardView.setContentPadding(i,i,i,i);//设置CardView中的子控件和父控件的距离
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
    }

    private void initView() {
        mCardView = findViewById(R.id.cv_card);
        sb1 = findViewById(R.id.sb_card_1);
        sb2 = findViewById(R.id.sb_card_2);
        sb3 = findViewById(R.id.sb_card_3);

    }
}

你可能感兴趣的:(Android,控件使用,android,android,studio,java)