Basic ideas:
Method 1. Masks can be directly superimposed on a layer with alpha white, or pure black view, can be directly in the ImageView coat layer framelayout, its foreground (general classmate may only know background, In fact Framelayout also have foreground) given a selector (when pressed to 0x33000000, that is, Pan-black), in place.
Method 2. Rewrite the ImageView, invalidate (trigger OnDraw) when the state is changed, OnDraw draws 0x33000000 according to the pressed state. Note Imageview.setclickable (true), or Imageview.setonclicklistener, can trigger dispatchsetpressed.
@Overridepublic void OnCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate); Setcontentview ( R.layout.activity_main);//Take 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);} @Overrideprotected void OnDraw (canvas canvas) {//TODO auto-generated method Stubsuper.ondraw (canvas); if (ispressed ()) Canvas.drawcolor (0x33000000);} @Overrideprotected void dispatchsetpressed (Boolean pressed) {//TODO auto-generated method stubsuper.dispatchsetpressed (pressed); invalidate ();}}