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ですが、角が四角いため、角を丸めようとしています。
ありがとう
Shape in Androidを使用して角を丸くする
roundcorner.xml
という名前の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" />
シェイプドロウアブルで作られたセレクターを背景として使用できます。
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" />
/ res/drawable内にimage_rounded_corner.xml
を作成します
<?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>
Android:background
を使用してimage_rounded_corner.xmlファイルを呼び出します
<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」の提案に従ってください。
これを使用:これを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"
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 )