如何在android中创建环形可绘制?

时间:2015-06-05 21:36:41

标签: android shape

使用此代码我只得到一个边框:

<!DOCTYPE>
<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script>

   angular.module("umbraco",[]).controller("MyTextbox", ['$scope', function ($scope, $routeParams) {
    $scope.nodeID1 = "Hello World";
   }]); 

 </script>

</head>
<body >
    <h1>My Textbook</h1>
    <div ng-app="umbraco" ng-controller="MyTextbox">
      <p>Fecha de ultima actualizacion: {{nodeID1}}</p>
    </div>
</body>
</html>

如何制作如下图所示的戒指形状:

enter image description here

7 个答案:

答案 0 :(得分:39)

2dp外环,2dp间隙:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:top="4dp"
        android:right="4dp"
        android:bottom="4dp"
        android:left="4dp">
        <shape
            android:shape="oval">
            <solid android:color="#4d4d4d" />
        </shape>
    </item>
    <item>
        <shape
            android:shape="oval">
            <stroke android:width="2dp"
                android:color="#4d4d4d"/>
        </shape>
    </item>
</layer-list>

答案 1 :(得分:4)

您将需要创建一个可绘制对象并将其设置为背景。

shape_primary_ring.xml

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadiusRatio="2.5"
    android:shape="ring"
    android:thickness="4dp"
    android:useLevel="false">

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

</shape>

预览

Ring Drawable Preview

答案 2 :(得分:3)

Ring drawable是元素的并置,使用layer-list

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:right="6dip" android:left="6dip">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
           android:innerRadius="0dp"
           android:shape="ring"
           android:thicknessRatio="3"
           android:useLevel="false" >
      <solid android:color="@android:color/transparent" />
      <stroke
          android:width="5dp"
          android:color="@color/maroon" />
    </shape>
  </item>
  <item android:right="20dip"
        android:left="20dip"
        android:bottom="0dip"
        android:top="34dip">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
           android:shape="rectangle"
           android:innerRadius="0dp">
      <solid android:color="@color/maroon" />
      <stroke android:width="1dip" android:color="@android:color/transparent" />
    </shape>
  </item>
  <item android:right="20dip"
        android:left="20dip"
        android:bottom="34dip"
        android:top="0dip">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
           android:shape="rectangle"
           android:innerRadius="0dp">
      <solid android:color="@color/maroon" />
      <stroke android:width="1dip" android:color="@android:color/transparent" />
    </shape>
  </item>
</layer-list>

enter image description here

Xml drawable比静态图像更有用,它们可以正确缩放而不需要.9库或从Gimp,Photoshop生成不同大小的集合

答案 3 :(得分:1)

  

我认为在Android中使用形状比在Photoshop中使用形状要好。

更正,创建一个更好的可绘制,因为您可以使用代码更改颜色或形状,而不是创建新的图像资源。 使用2 FrameLayoutViews创建TextView。第一个视图背景将是您的外环(形状),第二个视图背景将是圆形(形状)。最后View(更大的z指数)你的TextView

<FrameLayout>
   <View/><!-- (outer ring)-->
   <View/><!-- (filed circle)-->
   <TextView/><!-- (text)-->
</FrameLayout>

答案 4 :(得分:1)

<item>
    <shape
        android:innerRadiusRatio="4"
        android:shape="ring"
        android:thicknessRatio="15"
        android:useLevel="false" >
        <solid android:color="@color/white_color" />
        <size
            android:height="48dip"
            android:width="48dip" />
    </shape>

</item>
<item>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="ring"
        android:innerRadius="0dp"
        android:thickness="55dp"
        android:useLevel="false">
        <solid android:color="@color/white_color"/>
        <size android:height="200dp"
            android:width="200dp"/>
        <stroke android:color="@color/green_color" android:width="5dp"/>
    </shape>
</item>

答案 5 :(得分:0)

<?xml version="1.0" encoding="utf-8"
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:innerRadius="10dp" android:shape="ring" android:thickness="2dp" android:useLevel="false">
                <solid android:color="#dfdfdf" />
            </shape>
        </item>
     </selector>

答案 6 :(得分:0)

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="120"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="140">
    <item android:id="@android:id/background">
        <shape
            android:angle="0"
            android:innerRadiusRatio="2.3"
            android:shape="ring"
            android:thicknessRatio="20.0"
            android:type="sweep"
            android:useLevel="false">
            <solid android:color="@color/red" />
        </shape>
    </item>
</layer-list>

like This