我有问题,希望您能带给我一些信息。 为了拥有圆形的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无法适应屏幕尺寸,对于8英寸平板电脑来说180dp太大了,所以我的VideoView出现在DIAMONDS中,请参阅:
我试图以编程方式获取设备的尺寸,并使用setRadius()依赖它,但这并不完美,我不认为这是正确的方法。
我该怎么做才能找到适合平板电脑的良好拐角半径?谢谢
答案 0 :(得分:1)
好的,我找到了你的答案:
在您的项目中添加此类
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>