我想製作一個這樣的按鈕,但我無法使用 因爲當我將它轉換爲9patch時,按鈕線條會縮放。但我要重複而豐滿,線條
按鈕,這是原始圖像 如何爲此按鈕製作9patch按鈕
我想是這樣的
但它看起來是這樣的:(
我想製作一個這樣的按鈕,但我無法使用 因爲當我將它轉換爲9patch時,按鈕線條會縮放。但我要重複而豐滿,線條
按鈕,這是原始圖像 如何爲此按鈕製作9patch按鈕
我想是這樣的
但它看起來是這樣的:(
創建位圖資源並重復紋理。
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ab_texture_tile_apptheme"
android:tileMode="repeat" />
當我這樣做時,線條填充整個圖像不僅僅是圖像的紅色部分 – Person
這是因爲你的圓角。我認爲你必須在編碼方面做一些事情。通過重複紋理創建位圖,然後在java中圍繞圖像的角落。 –
@Person你可以在這裏找到四捨五入的代碼http://stackoverflow.com/a/3292810/1770916 –
當您縮放其中一部分時,您只使用9patch。根據您的示例圖像,您引用lines of button is scaling
,這是因爲9patch。
解決方案
不使用9patch設置它爲背景繪製對象/ ImageSource的在你的願望視圖
謝謝@Rod_Algonquin。有沒有其他解決方案來做到這一點。我可以用drawable xml來做到嗎? – Person
@Person只是將它直接設置爲一個視圖,所以它會平等擴展。如果那些行不在那裏,你可以做一個9patch –
試試這個:
final float r = 32;
float[] outerRadii = {
r, r, r, r, r, r, r, r
};
ShapeDrawable d = new ShapeDrawable(new RoundRectShape(outerRadii, null, null));
ShaderFactory factory = new ShaderFactory() {
@Override
public Shader resize(int width, int height) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
Shader shader = new BitmapShader(bitmap, TileMode.REPEAT, TileMode.REPEAT);
Matrix localM = new Matrix();
localM.postRotate(45);
shader.setLocalMatrix(localM);
return shader;
}
};
d.setShaderFactory(factory);
someView.setBackgroundDrawable(d);
使用ShapeDrawable,建立一個返回BitmapShader一個ShaderFactory – pskink