zoukankan      html  css  js  c++  java
  • 【安卓特效】怎样给ImageView加上遮罩,点击时泛黑、或泛白、?

    基本思路:

    方法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();
    		}
    	}





  • 相关阅读:
    9月9号作业
    9月9号笔记
    jupyter的补充
    jupyter的使用
    9月6号作业
    编程语言的分类
    计算机组成
    计算机组成的补充
    面向对象基础
    9月2号作业
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5071897.html
Copyright © 2011-2022 走看看