Guest User

Untitled

a guest
Nov 21st, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.97 KB | None | 0 0
  1. <ImageView style="@style/TitleBarLogo"
  2. android:contentDescription="@string/description_logo"
  3. android:src="@drawable/title_logo" />
  4.  
  5. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  6. <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/title_logo_pressed"/>
  7. <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/title_logo_pressed"/>
  8. <item android:state_focused="true" android:drawable="@drawable/title_logo_selected"/>
  9. <item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/title_logo_default"/>
  10. </selector>
  11.  
  12. final ImageView image = (ImageView) findViewById(R.id.my_image);
  13. image.setOnTouchListener(new View.OnTouchListener() {
  14. private Rect rect;
  15.  
  16. @Override
  17. public boolean onTouch(View v, MotionEvent event) {
  18. if(event.getAction() == MotionEvent.ACTION_DOWN){
  19. image.setColorFilter(Color.argb(50, 0, 0, 0));
  20. rect = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
  21. }
  22. if(event.getAction() == MotionEvent.ACTION_UP){
  23. image.setColorFilter(Color.argb(0, 0, 0, 0));
  24. }
  25. if(event.getAction() == MotionEvent.ACTION_MOVE){
  26. if(!rect.contains(v.getLeft() + (int) event.getX(), v.getTop() + (int) event.getY())){
  27. image.setColorFilter(Color.argb(0, 0, 0, 0));
  28. }
  29. }
  30. return false;
  31. }
  32. });
  33.  
  34. LayerDrawable d = new LayerDrawable(new Drawable[]{new BitmapDrawable(myBmp), getResources().getDrawable(R.drawable.my_selector_list)});
  35. imageView.setImageDrawable(d);
  36.  
  37. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  38. <item android:state_pressed="true" android:drawable="@drawable/background_normal"/>
  39. <item android:state_pressed="false" android:drawable="@drawable/background_pressed"/>
  40. </selector>
  41.  
  42. <ImageView
  43. android:contentDescription="@string/description_logo"
  44. android:src="@drawable/logo"
  45. android:background="@drawable/logo_box" />
  46.  
  47. <declare-styleable name="MyImageViewAttr">
  48. <attr name="hover_res" format="reference" />
  49. </declare-styleable>
  50.  
  51. public class MyImageView extends ImageView {
  52.  
  53. int resID, resID_hover;
  54.  
  55. public MyImageView(Context context) {
  56. super(context);
  57. // TODO Auto-generated constructor stub
  58. }
  59. public MyImageView(Context context, AttributeSet attrs) {
  60. super(context, attrs);
  61. // TODO Auto-generated constructor stub
  62.  
  63. TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyImageViewAttr);
  64. resID_hover = array.getResourceId(R.styleable.MyImageViewAttr_hover_res, -1);
  65. if(resID_hover != -1){
  66. int[] attrsArray = new int[] {
  67. android.R.attr.src
  68. };
  69.  
  70. TypedArray ta = context.obtainStyledAttributes(attrs, attrsArray);
  71. resID = ta.getResourceId(0 , View.NO_ID);
  72. ta.recycle();
  73.  
  74. setOnTouchListener(listener_onTouch);
  75. }
  76.  
  77. array.recycle();
  78.  
  79. }
  80. public MyImageView(Context context, AttributeSet attrs, int defStyle) {
  81. super(context, attrs, defStyle);
  82. // TODO Auto-generated constructor stub
  83. TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyImageViewAttr);
  84. resID_hover = array.getResourceId(R.styleable.MyImageViewAttr_hover_res, -1);
  85. if(resID_hover != -1){
  86. int[] attrsArray = new int[] {
  87. android.R.attr.src
  88. };
  89.  
  90. TypedArray ta = context.obtainStyledAttributes(attrs, attrsArray);
  91. resID = ta.getResourceId(0 , View.NO_ID);
  92. ta.recycle();
  93.  
  94. setOnTouchListener(listener_onTouch);
  95. }
  96.  
  97. array.recycle();
  98. }
  99.  
  100.  
  101.  
  102. OnTouchListener listener_onTouch = new OnTouchListener() {
  103.  
  104. @Override
  105. public boolean onTouch(View v, MotionEvent event) {
  106. // TODO Auto-generated method stub
  107.  
  108. switch (event.getAction()) {
  109. case MotionEvent.ACTION_DOWN:
  110. setImageResource(resID_hover);
  111. break;
  112.  
  113. case MotionEvent.ACTION_MOVE:
  114.  
  115. break;
  116.  
  117. case MotionEvent.ACTION_UP:
  118. setImageResource(resID);
  119. break;
  120.  
  121. default:
  122. break;
  123. }
  124.  
  125.  
  126. return false;
  127. }
  128. };
  129.  
  130. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  131. xmlns:myattr="http://schemas.android.com/apk/res-auto"
  132. android:layout_width="match_parent"
  133. android:layout_height="match_parent"
  134. android:orientation="vertical">
  135.  
  136. <dev.henrychuang.component.MyImageView
  137. android:layout_width="wrap_content"
  138. android:layout_height="wrap_content"
  139. android:clickable="true"
  140. myattr:hover_res="@drawable/icon_home_h"
  141. android:src="@drawable/icon_home"/>
  142.  
  143. ImageView testImage = (ImageView)findViewById(R.id.imageView);
  144. testImage.setOnTouchListener(listener);
  145.  
  146. View.OnTouchListener listener = new View.OnTouchListener() {
  147. private Rect rect;
  148. @Override
  149. public boolean onTouch(View v, MotionEvent event) {
  150.  
  151.  
  152. ImageView image = (ImageView) v;
  153. switch (event.getAction()) {
  154. case MotionEvent.ACTION_DOWN:
  155. image.getDrawable().setColorFilter(0x77000000,PorterDuff.Mode.SRC_ATOP);
  156. image.invalidate();
  157. break;
  158.  
  159. case MotionEvent.ACTION_UP:
  160. case MotionEvent.ACTION_CANCEL: {
  161. //clear the overlay
  162. image.getDrawable().clearColorFilter();
  163. image.invalidate();
  164. break;
  165. }
  166. }
  167.  
  168. return true;
  169. }
  170. };
  171.  
  172. <?xml version="1.0" encoding="utf-8"?>
  173. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  174. <item android:drawable="@drawable/ic_filter_up" android:state_pressed="true"/>
  175. <item android:drawable="@drawable/ic_filter_up_shadow"/>
  176. </selector>
Add Comment
Please, Sign In to add comment