当前位置: 首页 > 知识库问答 >
问题:

如何制作圆形表面视图

樊浩初
2023-03-14

我想做一个圆形的表面视图。我找了很多,但找不到好的解决办法。我现在正在做的是,我将SurfaceView放入一个FrameLayout,然后在它上面放置另一个视图,要么使用PNG掩码,要么使用可绘制的形状xml。给你

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:layout_width="140dp"
        android:layout_height="140dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="#000"
        android:orientation="vertical"
        android:visibility="visible" >

        <FrameLayout
            android:id="@+id/videorecordview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_weight=".2" >

            <SurfaceView
            android:id="@+id/surfaceView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
        </FrameLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@drawable/rounded"
        android:orientation="vertical" >
    </LinearLayout>

</RelativeLayout>

但这不是一个好的解决方案,也不是完美的解决方案。我想将surfaceview自定义为圆形。任何帮助都将不胜感激。谢谢:)

共有3个答案

贺君浩
2023-03-14

实现你所要求的,这是很容易做到的。您只需要使用下一个XML:

<androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:cardCornerRadius="12dp">
        <SurfaceView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />
    </androidx.cardview.widget.CardView>

要使用此CardView,请在build.gradle应用程序上添加此依赖项:

实现'androidx.cardview: cardview: 1.0.0'

孟英叡
2023-03-14

无法更改SurfaceView曲面的形状。

SurfaceView包含两部分,曲面和视图。视图零件的工作方式与任何其他视图相同。默认情况下,它只是作为一个透明的“孔”,在布局中创建一个窗口。应用程序将所有视图渲染到单个图层上。

Surface部分是一个单独的层,位于View层后面(除非您显式更改Surface的Z顺序),因此您只能在View层的透明区域中看到它。您可以在View图层上绘制以遮蔽Surface的部分,但不能更改Surface图层本身的形状。层是矩形的。

在许多情况下,一个纹理视图可以用来代替表面视图。纹理视图提供了更大的灵活性,因为它是由应用程序渲染到视图层的,但是效率可能低于SurfaceView。

更多信息可以在Android图形架构文档中找到。

常献
2023-03-14

一点小技巧。将曲面视图放在卡片视图中。

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/margin_normal" 
        app:cardCornerRadius="10dp"     
        app:cardPreventCornerOverlap="false">

        <SurfaceView
            android:id="@+id/surfaceView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="@dimen/margin_normal" />

    </android.support.v7.widget.CardView>

不要忘记将此添加到gradle文件以使用CardView

compile 'com.android.support:cardview-v7:25.0.1'

还有这两行内卡视图

app:cardCornerRadius="10dp"     
app:cardPreventCornerOverlap="false"

干杯快乐编码

 类似资料:
  • 我对这类事情很陌生,但这是我的问题。我已经看了几个问题,它是有意义的,如何使它的圆形,但图像,使圆形是一半被切断,有没有一个方法来解决这一点。我正在使用HTML和CSS。

  • 我只是试图用DrawOval()方法画圆,当我运行程序时,它只显示小正方形。我试图将构造函数添加到Surface类,但它不起作用。这是我制作的代码:

  • 问题内容: 我想知道如何在IE8中制作圆形边框。我在用着 适用于mozilla和safari。 问题答案: 有一个jQuery插件。http://jquery.malsup.com/corner/

  • 请问怎么把vantUI里的van-tabbar改造成这样凸起来比较平滑的半圆呀 用过伪元素,但是效果不太好 画出来的效果是这样,中间有一条细线,不知道你们能不能看出来,而且跟下面的tabbar的左右连接处不是很丝滑

  • 可以使用包的相应方法在图像上绘制各种形状,如圆形,矩形,线条,椭圆,多段线,凸起,多段线,多段线。 可以使用类的方法在图像上绘制一个圆形。 以下是这种方法的语法 - 该方法接受以下参数 - mat - Mat对象,表示要在其上绘制圆的图像。 point - 代表圆中心的对象。 radius - 表示圆的半径的整型变量。 scalar - 表示圆的颜色的标量对象(BGR)。 thickness -

  • 虽然HTML5的画布API未提供直接绘制圆形的方法,但我们一定可以通过绘制一个完全闭合的圆弧来创建这样一个方法。 图1-3 绘制圆弧 绘制步骤 按照以下步骤,在画布的中央绘制一个圆: 1. 定义2D画布上下文: window.onload  = function(){ var canvas  = document.getElementById("myCanvas"); var conte