如何在另一个环内画一个环
How to draw a ring inside another ring
我必须在圆圈内显示图标,我试图在另一个环内画一个环,但我做不到,当我尝试时它的位置很尴尬我该怎么做
我的代码
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Larger blue circle in back -->
<item>
<shape android:shape="oval">
<solid android:color="#f00"/>
<size
android:width="15dp"
android:height="15dp"/>
</shape>
</item>
<!-- Smaller red circle in front -->
<item>
<shape android:shape="oval">
<!-- transparent stroke = larger_circle_size - smaller_circle_size -->
<stroke android:color="@android:color/transparent"
android:width="10dp"/>
<solid android:color="#fff"/>
<size
android:width="1dp"
android:height="1dp"/>
</shape>
</item>
<item>
<shape android:shape="oval">
<!-- transparent stroke = larger_circle_size - smaller_circle_size -->
<stroke android:color="@android:color/transparent"
android:width="11dp"/>
<solid android:color="#f00"/>
<size
android:width="1dp"
android:height="1dp"/>
</shape>
</item>
试试我的代码。您可以根据您的要求重写这些值。
将此可绘制对象添加到任何背景时,请确保视图是正方形。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="6dip"
android:right="6dip">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:width="3dip"
android:color="#f00" />
</shape>
</item>
<item
android:bottom="80dip"
android:left="80dip"
android:right="80dip"
android:top="80dip">
<shape android:shape="oval">
<stroke
android:width="1dip"
android:color="#0f0" />
</shape>
</item>
</layer-list>
编辑 添加图片
尝试用Canvas画出来:
DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
Bitmap bitmap = Bitmap.createBitmap((int) (15 * metrics.density), (int) (15 * metrics.density), Bitmap.Config.ARGB_8888); // 15dp x 15dp
Canvas canvas = new Canvas(bitmap);
// clear the bitmap with a transparent color
canvas.drawColor(Color.TRANSPARENT);
Paint paint = new Paint();
paint.setStrokeWidth(2 * metrics.density); // 2dp, the circle width
// the external circle, large as the bitmap
paint.setColor(Color.RED);
canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2, paint);
// the internal one, smaller than the first one
paint.setColor(Color.GREEN);
canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2 - 3 * metrics.density, paint);
你应该调整一些数字。 DisplayMetrics
仅用于转换 dp(而不是像素)的大小。完成后,如果您需要将它用于视图(例如作为背景),您可以将 Bitmap
与 BitmapDrawable
一起使用。
试试这个代码
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="3dp"
android:right="3dp">
<shape android:shape="oval">
<stroke android:width="5dp"
android:color="@android:color/holo_red_dark">
</stroke>
</shape>
</item>
<item
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp">
<shape android:shape="oval">
<stroke android:width="10dp"
android:color="@android:color/holo_green_dark">
</stroke>
</shape>
</item>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<size
android:width="200dp"
android:height="200dp" />
<solid android:color="@android:color/transparent" />
<stroke android:color="#ff0000" android:width="5dp"/>
</shape>
</item>
<item
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp">
<shape android:shape="oval">
<solid android:color="@android:color/transparent" />
<stroke android:color="#5BB534" android:width="5dp"/>
</shape>
</item>
</layer-list>
我必须在圆圈内显示图标,我试图在另一个环内画一个环,但我做不到,当我尝试时它的位置很尴尬我该怎么做
我的代码
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Larger blue circle in back -->
<item>
<shape android:shape="oval">
<solid android:color="#f00"/>
<size
android:width="15dp"
android:height="15dp"/>
</shape>
</item>
<!-- Smaller red circle in front -->
<item>
<shape android:shape="oval">
<!-- transparent stroke = larger_circle_size - smaller_circle_size -->
<stroke android:color="@android:color/transparent"
android:width="10dp"/>
<solid android:color="#fff"/>
<size
android:width="1dp"
android:height="1dp"/>
</shape>
</item>
<item>
<shape android:shape="oval">
<!-- transparent stroke = larger_circle_size - smaller_circle_size -->
<stroke android:color="@android:color/transparent"
android:width="11dp"/>
<solid android:color="#f00"/>
<size
android:width="1dp"
android:height="1dp"/>
</shape>
</item>
试试我的代码。您可以根据您的要求重写这些值。 将此可绘制对象添加到任何背景时,请确保视图是正方形。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="6dip"
android:right="6dip">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:width="3dip"
android:color="#f00" />
</shape>
</item>
<item
android:bottom="80dip"
android:left="80dip"
android:right="80dip"
android:top="80dip">
<shape android:shape="oval">
<stroke
android:width="1dip"
android:color="#0f0" />
</shape>
</item>
</layer-list>
编辑 添加图片
尝试用Canvas画出来:
DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
Bitmap bitmap = Bitmap.createBitmap((int) (15 * metrics.density), (int) (15 * metrics.density), Bitmap.Config.ARGB_8888); // 15dp x 15dp
Canvas canvas = new Canvas(bitmap);
// clear the bitmap with a transparent color
canvas.drawColor(Color.TRANSPARENT);
Paint paint = new Paint();
paint.setStrokeWidth(2 * metrics.density); // 2dp, the circle width
// the external circle, large as the bitmap
paint.setColor(Color.RED);
canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2, paint);
// the internal one, smaller than the first one
paint.setColor(Color.GREEN);
canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2 - 3 * metrics.density, paint);
你应该调整一些数字。 DisplayMetrics
仅用于转换 dp(而不是像素)的大小。完成后,如果您需要将它用于视图(例如作为背景),您可以将 Bitmap
与 BitmapDrawable
一起使用。
试试这个代码
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="3dp"
android:right="3dp">
<shape android:shape="oval">
<stroke android:width="5dp"
android:color="@android:color/holo_red_dark">
</stroke>
</shape>
</item>
<item
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp">
<shape android:shape="oval">
<stroke android:width="10dp"
android:color="@android:color/holo_green_dark">
</stroke>
</shape>
</item>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<size
android:width="200dp"
android:height="200dp" />
<solid android:color="@android:color/transparent" />
<stroke android:color="#ff0000" android:width="5dp"/>
</shape>
</item>
<item
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp">
<shape android:shape="oval">
<solid android:color="@android:color/transparent" />
<stroke android:color="#5BB534" android:width="5dp"/>
</shape>
</item>
</layer-list>