我们要实现的效果如下:
在这之前先带大家了解一下xml bitmap,何为XML Bitmap?
XML Bitmap 是一个用XML定义的文件放在资源目录,定义的对象是图片,为bitmap定义别名,这个文件可以给bitmap定义一些额外的属性。例如:抖动。
1、文件存放位置
res/drawable/filename.xml
2、语法
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<bitmap
xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:src=\"@[package:]drawable/drawable_resource\"
android:antialias=[\"true\" | \"false\"]
android:dither=[\"true\" | \"false\"]
android:filter=[\"true\" | \"false\"]
android:gravity=[\"top\" | \"bottom\" | \"left\" | \"right\" | \"center_vertical\" |
\"fill_vertical\" | \"center_horizontal\" | \"fill_horizontal\" |
\"center\" | \"fill\" | \"clip_vertical\" | \"clip_horizontal\"]
android:tileMode=[\"disabled\" | \"clamp\" | \"repeat\" | \"mirror\"] />
例子:
<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
xmlns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
tools:context=\".MainActivity\" >
<!-- 与默认情况(@drawable/btn_default_pressed_holo_light)有差别 -->
<Button
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_centerHorizontal=\"true\"
android:layout_centerVertical=\"true\"
android:background=\"@drawable/bm\"
android:text=\"sssssssssssssssssss\" />
</RelativeLayout>
<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
xmlns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
tools:context=\".MainActivity\" >
<!-- 与默认情况(@drawable/btn_default_pressed_holo_light)有差别 -->
<Button
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_centerHorizontal=\"true\"
android:layout_centerVertical=\"true\"
android:background=\"@drawable/bm\"
android:text=\"sssssssssssssssssss\" />
</RelativeLayout>
效果图:
默认(@drawable/btn_default_pressed_holo_light):
引用(\\@drawable/bm):
从截图上就可以看出来差别。
titileMode=\"repeat\":
之后找了一些关于实现波浪线的方法,总感觉不大满意,常见的方法分享给大家:
1、直接搞一个这样的波浪线的切图
这种方式最简单,但是劣势也非常明显,如果view的宽度过大,则会出现图片变形,如下图所示:
如果过小则如下:
要求不高的话,这样勉强可以蒙混过关,但是追求完美的话,这样的效果显然很不给力
2、自定义控件绘制
这个方法的确可以达到不错的效果,但是实现比较麻烦。我也看到有朋友搞过,
3、用xml的bitmap标签实现波浪线效果
首页要搞一个周期的波浪线,即包括波峰和波谷,如下图所示:
wave_item:
然后水平方向上平铺,从而实现波浪线效果,代码如下:
wave.xml:
<?xml version=\"1.0\" encoding=\"utf-8\"?> <bitmap xmlns:android=\"http://schemas.android.com/apk/res/android\" android:antialias=\"true\" android:src=\"@drawable/wave_item\" android:tileMode=\"repeat\" />
activity_main.xml
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
xmlns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:orientation=\"vertical\"
android:paddingBottom=\"@dimen/activity_vertical_margin\"
android:paddingTop=\"@dimen/activity_vertical_margin\" >
<ImageView
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"
android:background=\"@drawable/wave\" />
</LinearLayout>
注意:这个ImageView通过background显示图片,src是显示不了这样的效果的。
希望本文所述对大家学习Android软件编程有所帮助。
本文地址:https://www.stayed.cn/item/16984
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我