源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android实现波浪线效果(xml bitmap)

  • 时间:2020-05-14 14:26 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android实现波浪线效果(xml bitmap)
我们要实现的效果如下: [img]http://files.jb51.net/file_images/article/201601/2016111154537918.png?2016011154547[/img] 在这之前先带大家了解一下xml bitmap,何为[b]XML Bitmap[/b]? [b]XML Bitmap [/b]是一个用XML定义的文件放在资源目录,定义的对象是图片,为bitmap定义别名,这个文件可以给bitmap定义一些额外的属性。例如:抖动。 [b]1[/b]、[b]文件存放位置 [/b]res/drawable/filename.xml [b]2、语法[/b]
<?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):  [img]http://files.jb51.net/file_images/article/201601/2016111155310992.jpg?2016011155317[/img] 引用(\@drawable/bm): [img]http://files.jb51.net/file_images/article/201601/2016111155333799.jpg?2016011155340[/img] 从截图上就可以看出来差别。  titileMode="repeat": [img]http://files.jb51.net/file_images/article/201601/2016111155349250.jpg?2016011155355[/img] 之后找了一些关于实现波浪线的方法,总感觉不大满意,常见的方法分享给大家: [b]1、直接搞一个这样的波浪线的切图[/b]       这种方式最简单,但是劣势也非常明显,如果view的宽度过大,则会出现图片变形,如下图所示:  [img]http://files.jb51.net/file_images/article/201601/2016111154557492.png?201601115464[/img] 如果过小则如下: [img]http://files.jb51.net/file_images/article/201601/2016111154616772.png?2016011154623[/img] 要求不高的话,这样勉强可以蒙混过关,但是追求完美的话,这样的效果显然很不给力 [b]2、自定义控件绘制[/b]      这个方法的确可以达到不错的效果,但是实现比较麻烦。我也看到有朋友搞过, [b]3、用xml的bitmap标签实现波浪线效果[/b]       首页要搞一个周期的波浪线,即包括波峰和波谷,如下图所示:       wave_item:       [img]http://files.jb51.net/file_images/article/201601/2016111154654263.png?201601115470[/img]     然后水平方向上平铺,从而实现波浪线效果,代码如下: 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>
[b] 注意:[/b]这个ImageView通过background显示图片,src是显示不了这样的效果的。 希望本文所述对大家学习Android软件编程有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部