Android应用中设置alpha值来制作透明与渐变效果的实例

Android系统支持的颜色是由4个值组成的,前3个为RGB,也就是我们常说的三原色(红、绿、蓝),最后一个值是A,也就是Alpha。这4个值都在0~255之间。颜色值越小,表示该颜色越淡,颜色值越大,表示该颜色越深。如果RGB都是0,就是黑色,如果都为255,就是白色。Alpha也需要在0~255之间变化。Alpha的值越小,颜色就越透明,Alpha的值越大,颜色就不透明。当Alpha的值为0时,颜色完全透明,完全透明的位图或者图形从View上消失。当Alpha的值为255时,颜色不透明。从Alpha的特性可知,设置颜色的透明度实际上就是设置Alpha值。
半透明:<Button android:background="#e0000000" ... />
透明:<Button android:background="#00000000" ... />
颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0 到 255(00 到 ff)。对于 alpha,00 表示完全透明,ff 表示完全不透明。表达式顺序是“aabbggrr”,其中aa=alpha(00 到 ff);bb=blue(00 到 ff);gg=green(00 到 ff);rr=red(00 到 ff)。例如,如果您希望对某叠加层应用不透明度为 50% 的蓝色,则应指定以下值:7fff0000

设置颜色的透明度可以通过Paint类的setAlpha方法来完成。因为做项目中,很多时候不需要让照片完全透明的,所以试验做了一个可以调节图片透明度的程序。

例1
本例子通过一个滑杆(SeekBar)组件改变位图中颜色的Alpha值(透明度)。显示位图的MyView类的代码如下:

private class MyView extends View { private Bitmap bitmap; public MyView(Context context) { super(context); InputStream is =getResources().openRawResource(R.drawable.image); bitmap = BitmapFactory.decodeStream(is); setBackgroundColor(Color.WHITE); } @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setAlpha(alpha); canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap .getHeight()), new Rect(10, 10, 310, 235), paint); } }

上面代码中的drawBitMap方法的第2个参数表示原位图的复制区域,在本例中表示复制整个原位图。第3个参数表示绘制的目标区域。
SeekBar组件的onProgressChanged时间方法的代码如下:

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { alpha = progress; setTitle("alpha:" + progress); myView.invalidate(); }

运行本例,将滑杆移动到靠左和靠右的位置,将会看到如下面两个图的效果:

例2
Alpha透明渐变动画 。

<alpha>标签为alpha透明度节点
android:fromAlpha="1.0" 设置动画起始透明度为1.0 表示完全不透明
android:toAlpha="0.0"设置动画结束透明度为0.0 表示完全透明
也就是说alpha的取值范围为0.0 - 1.0 之间

这个动画布局设置动画从完全不透明渐变到完全透明。

<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:fromAlpha="1.0" android:toAlpha="0.0" android:repeatCount="infinite" android:duration="2000"> </alpha>

代码实现

import android.app.Activity; import android.os.Bundle; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; public class AlphaActivity extends Activity { /**显示动画的ImageView**/ ImageView mImageView = null; /**透明动画**/ Animation mAnimation = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.translate); /**拿到ImageView对象**/ mImageView = (ImageView)findViewById(R.id.imageView); /**加载透明动画**/ mAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha); /**播放透明动画**/ mImageView.startAnimation(mAnimation); } }

时间: 2024-10-24 18:15:46

Android应用中设置alpha值来制作透明与渐变效果的实例的相关文章

Android应用中设置alpha值来制作透明与渐变效果的实例_Android

Android系统支持的颜色是由4个值组成的,前3个为RGB,也就是我们常说的三原色(红.绿.蓝),最后一个值是A,也就是Alpha.这4个值都在0~255之间.颜色值越小,表示该颜色越淡,颜色值越大,表示该颜色越深.如果RGB都是0,就是黑色,如果都为255,就是白色.Alpha也需要在0~255之间变化.Alpha的值越小,颜色就越透明,Alpha的值越大,颜色就不透明.当Alpha的值为0时,颜色完全透明,完全透明的位图或者图形从View上消失.当Alpha的值为255时,颜色不透明.从A

Android线程中设置控件的值提示报错的解决方法_Android

本文实例讲述了Android线程中设置控件的值提示报错的解决方法.分享给大家供大家参考,具体如下: 在Android线程中设置控件的值一般会与Handler联合使用,如下: package com.yarin.android.Examples_04_15; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import andro

Android线程中设置控件的值提示报错的解决方法

本文实例讲述了Android线程中设置控件的值提示报错的解决方法.分享给大家供大家参考,具体如下: 在Android线程中设置控件的值一般会与Handler联合使用,如下: package com.yarin.android.Examples_04_15; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import andro

android-如何在Android spinner中设置数据?

问题描述 如何在Android spinner中设置数据? 我从spinner 中获得一个值,并把它储存在一个数据库中.但是在返回时,不能在Spinner设置Text. 如何在EditText中像设置其它功能一样设置这个功能? public class MainActivity_spinner extends Activity { Button save; Button show; public void onCreate(Bundle savedInstanceState) { super.o

java-在 spinner 中设置默认值

问题描述 在 spinner 中设置默认值 使用的 spinner 的代码 private String `DEFAULT_CURRENCY_TYPE`; ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, currenciesDataSource.keys); adapter.setDropDownViewRe

android代码布局-android 代码中设置控件的垂直居中和两个控件之间的距离。

问题描述 android 代码中设置控件的垂直居中和两个控件之间的距离. 因为数据是动态的 所以所有的控件和布局都是在java代码里面设置 怎样才能让一个控件垂直居中 还有两个控件之间的距离又是怎么设置的啊 求高手指点啊 最好能给点代码 我是新手 说的太笼统了 看不太懂 谢谢了 解决方案 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT,

HttpRuntime.Cache在一般处理程序中设置了值,当下一次请求时,里面又重置,不知道怎么回事

问题描述 HttpRuntime.Cache在一般处理程序中设置了值,当下一次请求时,里面又重置.然后我又再Global里添加静态变量,在一般处理程序中对其进行更改,在下一次请求也重置了....iis没有重启--代码如下:publicclassGlobal:System.Web.HttpApplication{publicstaticintlist=0;}这是一般处理程序中的:Global.list++;HttpRuntime.Cache.Insert(("m"+mid),m,null

Android系统中设置TextView的行间距(非行高)

Android系统中TextView默认显示中文时会比较紧凑,不是很美观.为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtra或android:lineSpacingMultiplier. 关于Android下TextView中文换行问题,可查看Android自定义view-文本自动换行. 1.android:lineSpacingExtra 设置行间距,如"3dp". 2.android:lineSpacingMultiplier 设置行间距的倍数

Android开发中超好用的正则表达式工具类RegexUtil完整实例

本文实例讲述了Android开发中超好用的正则表达式工具类RegexUtil.分享给大家供大家参考,具体如下: /*********************************************** * 正则表达式工具 * * @author chen.lin * @version 1.0 ************************************************/ public class RegexUtil { /** * 车牌号码Pattern */ pub