gpt4 book ai didi

java - CardView 上的自适应半径

转载 作者:行者123 更新时间:2023-11-29 23:20:49 24 4
gpt4 key购买 nike

我有一个问题,希望你能给我一些信息。为了有一个圆形的 VideoView ,我把它放在 CardView 中

<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/cardVideo"
app:cardCornerRadius="180dp"
android:background="#000">

<com.twilio.video.VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible" />
</android.support.v7.widget.CardView>

但问题是我在多个平板电脑上构建我的应用程序并且 cardCornerRadius 不适应屏幕尺寸,180dp 对于 8 英寸平板电脑来说太大了所以我的 VideoView 出现在 DIAMONDS 中看到:

enter image description here

例如,在 10 英寸的平板电脑中,它是一个完美的圆:enter image description here

我尝试以编程方式获取设备英寸并使用 setRadius() 依赖它,但它并不完美,我认为这不是正确的方法。

如何找到适合平板电脑的良好圆角半径?谢谢

最佳答案

好的,我找到了你的答案:

在你的项目中添加这个类

package com.example.myapplication;

import android.content.Context;
import android.graphics.*;
import android.util.AttributeSet;
import android.widget.FrameLayout;

public class RoundedCornerLayout extends FrameLayout {

private Path path = new Path();

public RoundedCornerLayout(Context context) {
super(context);
}

public RoundedCornerLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}

public RoundedCornerLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);

// compute the path
float halfWidth = w / 2f;
float halfHeight = h / 2f;
float centerX = halfWidth;
float centerY = halfHeight;
path.reset();
path.addCircle(centerX, centerY, Math.min(halfWidth, halfHeight), Path.Direction.CW);
path.close();

}

@Override
protected void dispatchDraw(Canvas canvas) {
int save = canvas.save();
canvas.clipPath(path);
super.dispatchDraw(canvas);
canvas.restoreToCount(save);
}
}

并将您的 VideoView 放入其中。喜欢这里:

<com.example.myapplication.RoundedCornerLayout
android:layout_width="100dp"
android:layout_height="100dp">

// place your VideoView
<ImageView
android:layout_width="match_parent"
android:src="@color/colorPrimary"
android:layout_height="match_parent"/>

</com.example.myapplication.RoundedCornerLayout>

shot

引用文献:1 2

关于java - CardView 上的自适应半径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54345218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com