gpt4 book ai didi

android - 圆圈形式的相对布局

转载 作者:可可西里 更新时间:2023-10-31 22:05:07 24 4
gpt4 key购买 nike

我想以圆圈的形式进行相对布局。我不想使用 Canvas ,因为我无法处理 Canvas 中的可点击事件。我希望鼠标点击等每个事件仅在该圆圈内执行。在圆圈外单击时,不应执行任何布局事件。
enter image description here

我有以下代码,circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">

<solid
android:color="@android:color/white"/>

<size
android:width="10dp"
android:height="10dp"/>
</shape>

,img.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:drawable="@drawable/circle"/>

</layer-list>

,布局

<RelativeLayout
android:id="@+id/test_layout"
android:layout_width="700px"
android:layout_height="700px"
android:background="@drawable/img" />

但是这段代码是在相对布局的背景上设置圆圈,它是矩形的形式。无论我添加到相对布局的什么事件都在圆圈外执行。我希望整个布局都是一个圆圈。我怎么能这样做吗?

最佳答案

每个布局都是一个矩形。你不能改变它。这就是 Android UI 框架的工作原理。

但是您可以画一个圆(按照您已经在做的方式)并自己处理触摸事件。

为此,您必须创建自定义相对布局(或您需要的任何其他类型的布局):

public class CircleRelativeLayout extends RelativeLayout {

@Override触摸方法:

public boolean onInterceptTouchEvent (MotionEvent event) {
if(isInsideCircle(event)){
return super.onInterceptTouchEvent(event);
} else {
return false;
}
}

public boolean onTouchEvent (MotionEvent event) {
if(isInsideCircle(event)){
return super.onTouchEvent(event);
} else {
return false;
}
}

然后只需使用几何 Material 创建方法 private boolean isInsiderCircle(MotionEvent event) 即可。

关于android - 圆圈形式的相对布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28939087/

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