Округлые углы
Я пытаюсь закруглить углы на android ImageButton, код выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:layout_marginTop="57dp"
android:src="@drawable/friends"
android:padding="1dp"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/imageButton2"
android:layout_marginRight="62dp" />
</RelativeLayout>
</LinearLayout>
В основном наш вывод - ImageButton, но он имеет квадраты углов, мы пытаемся закруглить углы.
Спасибо
Ответы
Ответ 1
Используйте Форма в андроиде, чтобы сделать круговые углы
создайте файл xml с именем roundcorner.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#33DDFF" />
<corners android:radius="4dp" />
</shape>
В свой ImageButton добавьте этот атрибут android:background="@drawable/roundcorner"
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:layout_marginTop="57dp"
android:src="@drawable/friends"
android:background="@drawable/roundcorner"
android:padding="1dp"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/imageButton2"
android:layout_marginRight="62dp" />
Ответ 2
Вы можете использовать селектор, выполненный из элементов рисунка, в качестве фона, например:
rounded_bg.xml(создается в папке res/drawable-nodpi)
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ffffff" />
<corners
android:bottomLeftRadius="4dp"
android:bottomRightRadius="4dp"
android:topLeftRadius="4dp"
android:topRightRadius="4dp" />
</shape>
Создайте еще один, изменив цвет, указанный в solid android:color="#ffffff"
, например, на solid android:color="#ff0000"
и назовите этот файл rounded_bg_selected.xml
Создайте селектор (также в res/drawable-nodpi), назовите его selectable_button_bg.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/rounded_bg_selected" />
<item android:state_focused="false"
android:drawable="@drawable/rounded_bg" />
</selector>
Затем укажите его в своем макете:
<ImageButton
android:background="@drawable/selectable_button_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:layout_marginTop="57dp"
android:src="@drawable/friends"
android:padding="1dp"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/imageButton2"
android:layout_marginRight="62dp" />
Ответ 3
Создайте image_rounded_corner.xml
внутри /res/drawable
<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#000000" />
<stroke android:width="3dp" android:color="#776da8" />
<corners android:bottomRightRadius="5dp" android:bottomLeftRadius="5dp" android:topLeftRadius="5dp" android:topRightRadius="5dp" />
<padding android:left="2dp" android:top="2dp" android:right="2dp" android:bottom="2dp" />
</shape>
Вызвать файл image_rounded_corner.xml с помощью android:background
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/myimage"
android:src="@drawable/icon"
android:background="@drawable/image_rounded_corner" />
или используйте Draw 9-patch файл, предложенный "Artoo Detoo".
Ответ 4
Используйте это:
Поместите это в папку res/drawable
my_gradient.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="100dp" />
<stroke
android:width="5dp"
android:color="#090" />
</shape>
В вашем ImageButton Просто поставьте:
android:background="@drawable/my_gradient"
Ответ 5
public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
final float roundPx = pixels;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
этот код вам поможет. (Из китайской статьи: http://www.cnblogs.com/liuweiming/archive/2012/04/23/2466074.html)