博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【安卓特效】怎样给ImageView加上遮罩,点击时泛黑、或泛白、?
阅读量:7114 次
发布时间:2019-06-28

本文共 1222 字,大约阅读时间需要 4 分钟。

基本思路:

方法1.遮罩可直接叠加一层带alpha的纯白、或纯黑View,可直接在ImageView外套一层FrameLayout,其foreground(一般同学可能仅仅知道background,事实上framelayout还有foreground)给定一个selector(按下时给0x33000000,即泛黑),到位。

方法2.重写imageView,按下状态改变时invalidate(触发onDraw),onDraw中依据按下状态绘制0x33000000。注意imageView.setClickable(true),或imageView.setOnClickListener时才可触发dispatchSetPressed。

@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		// 取id		// imgTest = (ImageView) findViewById(R.id.imgTest);		loMain = (RelativeLayout) findViewById(R.id.loMain);		findViewById(R.id.btn1).setOnClickListener(this);		findViewById(R.id.btn2).setOnClickListener(this);		MyImg myImg = new MyImg(this);		myImg.setImageResource(R.drawable.meinv);		myImg.setClickable(true);		loMain.addView(myImg);	}	private class MyImg extends ImageView {		public MyImg(Context context) {			super(context);		}		@Override		protected void onDraw(Canvas canvas) {			// TODO Auto-generated method stub			super.onDraw(canvas);			if (isPressed())				canvas.drawColor(0x33000000);		}		@Override		protected void dispatchSetPressed(boolean pressed) {			// TODO Auto-generated method stub			super.dispatchSetPressed(pressed);			invalidate();		}	}

你可能感兴趣的文章
Java线程:新特征-阻塞栈
查看>>
CentOS 5.5升级内核到2.6.35.4
查看>>
查询整个数据库中某个特定值所在的表和字段的方法
查看>>
JS把数组中相同元素组合成一个新的数组问题
查看>>
《Linux内核设计与实现》读书笔记(三)- Linux的进程
查看>>
AngularJS快速入门指南08:表格
查看>>
C++矩阵运算库推荐
查看>>
在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)
查看>>
Android 控件在布局中按比例放置[转]
查看>>
内核通知链 学习笔记 【转】
查看>>
Input Method of Win32 System
查看>>
count(*) VS count(X)
查看>>
MS ASP.Net Ajax 服务端扩展
查看>>
android102 查询,插入联系人
查看>>
数据库邮件
查看>>
adstrtal.sh报超时错误 ERROR : Timed out( 100000 ): Interrupted Exception
查看>>
一个前端工程师的基本修养
查看>>
ZT:三十个好习惯
查看>>
.Net开发笔记(七)使用组件编程
查看>>
ASP.NET企业开发框架IsLine FrameWork系列之八--AppLogProvider日志框架(下)
查看>>