创建一个椭圆形状,其大小相对于显示尺寸

时间:2015-03-01 11:40:37

标签: android

我需要一个自定义形状,如下所示:

enter image description here

形状的样式是笔触,因此该示例的橙色部分是圆的边框。这里的白色部分不是形状的一部分!它是形状下布局的颜色。我希望你明白我的意思。形状不应该在中间绘制白色圆圈,形状应该绘制橙色的东西。

更多:我需要白色圆圈的宽度和高度相对于屏幕尺寸。如果屏幕宽度小于高度,则需要白色圆圈的半径为宽度/ 2,如果高度小于宽度,则需要将圆的半径设置为高度/ 2.

我找不到任何可以实现的目标。我认为这将是一个简单的任务,因为它是一个简单的绘图,但android似乎很难实现,因为形状总是设置固定dp的宽度和高度,如下例中的120dp:

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

   <solid 
       android:color="#666666"/>

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

我需要这个drawable作为imageview的叠加层。

2 个答案:

答案 0 :(得分:0)

您是否考虑过在运行时设置形状的宽度和高度?

您可以像这样找到屏幕的宽度和高度:

int width = yourView.getWidth(); int height = yourView.getHeight();

或只是

int width = getWidth(); int height = getHeight();

Context c = context;
DisplayMetrics metrics = c.getResources().getDisplayMetrics();
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;

在最后一个例子中,你需要从某个地方获取上下文变量。

然后将它除以2并设置形状。

答案 1 :(得分:0)

你可以通过在白色圆圈drawable中使用ShapeDrawable来实现这一点。

采用完整橙色背景的一个相对布局,并添加带有白色圆圈可绘制的imageview。

希望这会有所帮助:)