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

所属分类: 软件编程 / Android 阅读数: 1967
收藏 0 赞 0 分享

我们要实现的效果如下:

在这之前先带大家了解一下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软件编程有所帮助。

更多精彩内容其他人还在看

Android样式和主题之选择器的实例讲解

今天小编就为大家分享一篇关于Android样式和主题之选择器的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Android应用动态修改主题的方法示例

今天小编就为大家分享一篇关于Android应用动态修改主题的方法示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter 网络请求框架封装详解

这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Flutter倒计时/计时器的实现代码

这篇文章主要介绍了Flutter倒计时/计时器的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android使用google breakpad捕获分析native cash

这篇文章主要介绍了Android使用google breakpad捕获分析native cash 的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Flutter WebView与JS互相调用简易指南

这篇文章主要介绍了详解Flutter WebView与JS互相调用简易指南,分为JS调用Flutter和Flutter调用JS,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android开发实现ListView和adapter配合显示图片和文字列表功能示例

这篇文章主要介绍了Android开发实现ListView和adapter配合显示图片和文字列表功能,涉及Android使用ListView结合adapter适配器实现图文显示功能相关的布局、解析、权限控制等操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Android文字基线Baseline算法的使用讲解

今天小编就为大家分享一篇关于Android文字基线Baseline算法的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter自定义实现神奇动效的卡片切换视图的示例代码

这篇文章主要介绍了Flutter自定义实现神奇动效的卡片切换视图的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android实现自定义滑动刻度尺方法示例

这篇文章主要给大家介绍了关于Android实现自定义滑动刻度尺的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多