我试图在android中创建一个圆角边的视图.到目前为止我找到的解决方案是定义一个带圆角的形状,并将其用作该视图的背景.
这就是我所做的,定义一个drawable,如下所示
<padding
android:top="2dp"
android:bottom="2dp"/>
<corners android:bottomRightRadius="20dp"
android:bottomLeftRadius="20dp"
android:topLeftRadius="20dp"
android:topRightRadius="20dp"/>
Run Code Online (Sandbox Code Playgroud)
现在我用它作为我的布局的背景如下
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:clipChildren="true"
android:background="@drawable/rounded_corner">
Run Code Online (Sandbox Code Playgroud)
这很好用,我可以看到视图有圆角.
但我的布局中有许多其他子视图说一个ImageView或一个MapView.当我在上面的布局中放置一个ImageView时,图像的角不会被剪裁/裁剪,而是显示为满.
我已经看到了其他解决方法,使它像这里解释的那样工作.
但有没有一种方法可以为视图设置圆角,并且所有子视图都包含在具有圆角的主视图中?
谢谢.
我对Android开发相对较新,我想知道是否可以将VideoView屏蔽成形状.这是我到目前为止:


我的视频和布局XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#0088ff"
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=".VideoPlayerActivity" >
<FrameLayout
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/circular_mask"
android:foreground="@drawable/circular_mask" >
<VideoView
android:id="@+id/videoView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fitsSystemWindows="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:scrollbarAlwaysDrawVerticalTrack="false" />
<Space
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
面膜形状xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="20dp"
android:shape="oval" >
<solid android:color="#FFFFFFFF" />
<corners android:radius="10dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
主要java:
package com.example.webmvideo;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.annotation.TargetApi;
import android.app.Activity;
import android.view.Menu;
import android.widget.MediaController;
import android.widget.VideoView;
import android.util.Log;
import android.media.MediaPlayer;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class MainActivity extends Activity …Run Code Online (Sandbox Code Playgroud) 嗨,我正在尝试创建一个圆形视频播放器,我正在使用 Exoplaye2 库。我将 PLayerView 放在圆形的 FrameLayout 中,但不知道如何使 PlayerView 本身变圆。我试过这个,但它不起作用,我什至创建了一个 rounded_shape_drawable 并将它添加到 Playeview 的背景中,但它不起作用(基本上,设置 PlayeView 的背景根本不起作用)。
下面是我的简单布局文件:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="25dp"
android:layout_weight="4"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="1">
<FrameLayout
android:id="@+id/player_view_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.6"
android:padding="10dp"
android:background="@drawable/rounded_video_layout">
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/exoplayer_player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:fastforward_increment="@integer/exoplayer_playback_fastforward_increment_ms"
app:resize_mode="fill"
app:rewind_increment="@integer/exoplayer_playback_rewind_increment_ms"
app:show_timeout="@integer/exoplayer_show_control_timeout_ms"
app:use_artwork="true"
app:use_controller="false">
</com.google.android.exoplayer2.ui.PlayerView>
</FrameLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
以下是我当前的输出:
任何帮助将不胜感激