Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <ImageView style="@style/TitleBarLogo"
- android:contentDescription="@string/description_logo"
- android:src="@drawable/title_logo" />
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/title_logo_pressed"/>
- <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/title_logo_pressed"/>
- <item android:state_focused="true" android:drawable="@drawable/title_logo_selected"/>
- <item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/title_logo_default"/>
- </selector>
- final ImageView image = (ImageView) findViewById(R.id.my_image);
- image.setOnTouchListener(new View.OnTouchListener() {
- private Rect rect;
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if(event.getAction() == MotionEvent.ACTION_DOWN){
- image.setColorFilter(Color.argb(50, 0, 0, 0));
- rect = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
- }
- if(event.getAction() == MotionEvent.ACTION_UP){
- image.setColorFilter(Color.argb(0, 0, 0, 0));
- }
- if(event.getAction() == MotionEvent.ACTION_MOVE){
- if(!rect.contains(v.getLeft() + (int) event.getX(), v.getTop() + (int) event.getY())){
- image.setColorFilter(Color.argb(0, 0, 0, 0));
- }
- }
- return false;
- }
- });
- LayerDrawable d = new LayerDrawable(new Drawable[]{new BitmapDrawable(myBmp), getResources().getDrawable(R.drawable.my_selector_list)});
- imageView.setImageDrawable(d);
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true" android:drawable="@drawable/background_normal"/>
- <item android:state_pressed="false" android:drawable="@drawable/background_pressed"/>
- </selector>
- <ImageView
- android:contentDescription="@string/description_logo"
- android:src="@drawable/logo"
- android:background="@drawable/logo_box" />
- <declare-styleable name="MyImageViewAttr">
- <attr name="hover_res" format="reference" />
- </declare-styleable>
- public class MyImageView extends ImageView {
- int resID, resID_hover;
- public MyImageView(Context context) {
- super(context);
- // TODO Auto-generated constructor stub
- }
- public MyImageView(Context context, AttributeSet attrs) {
- super(context, attrs);
- // TODO Auto-generated constructor stub
- TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyImageViewAttr);
- resID_hover = array.getResourceId(R.styleable.MyImageViewAttr_hover_res, -1);
- if(resID_hover != -1){
- int[] attrsArray = new int[] {
- android.R.attr.src
- };
- TypedArray ta = context.obtainStyledAttributes(attrs, attrsArray);
- resID = ta.getResourceId(0 , View.NO_ID);
- ta.recycle();
- setOnTouchListener(listener_onTouch);
- }
- array.recycle();
- }
- public MyImageView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- // TODO Auto-generated constructor stub
- TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyImageViewAttr);
- resID_hover = array.getResourceId(R.styleable.MyImageViewAttr_hover_res, -1);
- if(resID_hover != -1){
- int[] attrsArray = new int[] {
- android.R.attr.src
- };
- TypedArray ta = context.obtainStyledAttributes(attrs, attrsArray);
- resID = ta.getResourceId(0 , View.NO_ID);
- ta.recycle();
- setOnTouchListener(listener_onTouch);
- }
- array.recycle();
- }
- OnTouchListener listener_onTouch = new OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- // TODO Auto-generated method stub
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- setImageResource(resID_hover);
- break;
- case MotionEvent.ACTION_MOVE:
- break;
- case MotionEvent.ACTION_UP:
- setImageResource(resID);
- break;
- default:
- break;
- }
- return false;
- }
- };
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:myattr="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <dev.henrychuang.component.MyImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:clickable="true"
- myattr:hover_res="@drawable/icon_home_h"
- android:src="@drawable/icon_home"/>
- ImageView testImage = (ImageView)findViewById(R.id.imageView);
- testImage.setOnTouchListener(listener);
- View.OnTouchListener listener = new View.OnTouchListener() {
- private Rect rect;
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- ImageView image = (ImageView) v;
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- image.getDrawable().setColorFilter(0x77000000,PorterDuff.Mode.SRC_ATOP);
- image.invalidate();
- break;
- case MotionEvent.ACTION_UP:
- case MotionEvent.ACTION_CANCEL: {
- //clear the overlay
- image.getDrawable().clearColorFilter();
- image.invalidate();
- break;
- }
- }
- return true;
- }
- };
- <?xml version="1.0" encoding="utf-8"?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:drawable="@drawable/ic_filter_up" android:state_pressed="true"/>
- <item android:drawable="@drawable/ic_filter_up_shadow"/>
- </selector>
Add Comment
Please, Sign In to add comment