Reputation: 5341
If I want to use the image as button background, how can I do it? 9 patch? Or fixed image(ldip/mdip/hdip)?
Thanks!
edit:
thanks for the two replies, I know the tool draw9patch, but I don't know how to define the vertical area so it won't destroy the gradient? Thanks!
Upvotes: 0
Views: 4321
Reputation: 4424
I'm not sure if it'll look good, but as 9-patch actually allows you to set multiple stretchable areas, you could try to set multiple vertical areas of 1 pixel high, and have all those stretch (basically, have a stretchable line every 2 pixels). This won't look as good as if the gradient worked perfectly, but might be good enough if you don't stretch it too much.
Upvotes: 0
Reputation: 29745
To create a custom button you need:
A <selector>
(state list) drawable that references different drawables for default/pressed/focused/disabled/etc. states.
Each state should have a nine-patch (.9.png
) drawable in each density (ldpi/mdpi/hdpi/xhdpi). Note that the framework can scale up or down, so you don't need to provide nine-patches for each density, but for best-looking results, you should do so.
So, your custom button drawable uses the following folder structure:
res/
drawable/
mybtn.xml # <selector> (state list)
drawable-hdpi/
mybtn_default.9.png
mybtn_pressed.9.png
mybtn_focused.9.png
mybtn_disabled.9.png
drawable-mdpi/
mybtn_default.9.png
mybtn_pressed.9.png
mybtn_focused.9.png
mybtn_disabled.9.png
drawable-xhdpi/
...
Upvotes: 3
Reputation: 11775
It should definitely be 9-patch. You will have to carefully select stretchable areas to not break the gradients though. Use the tool to preview how it would look on a button.
Upvotes: 0
Reputation: 10028
I believe that a 9-patch would be the more elegant solution. You can use the "draw9patch" tool from the "tools" folder in your Android SDK to do this. The official Android documentation gives a good overview on how to use this : http://developer.android.com/guide/developing/tools/draw9patch.html
Upvotes: 3