Advertisement
Guest User

Untitled

a guest
Aug 2nd, 2015
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1.  
  2. import android.content.Context;
  3. import android.graphics.Rect;
  4. import android.util.AttributeSet;
  5. import android.view.MotionEvent;
  6. import android.view.View;
  7. import android.widget.ImageView;
  8.  
  9.  
  10. /**
  11. * Created by shemesht on 5/4/15.
  12. */
  13. public class ImageViewButton extends ImageView {
  14. public ImageViewButton(Context context) {
  15. super(context);
  16. onTouch();
  17. }
  18.  
  19. public ImageViewButton(Context context, AttributeSet attrs) {
  20. super(context, attrs);
  21. onTouch();
  22. }
  23.  
  24. public ImageViewButton(Context context, AttributeSet attrs, int defStyleAttr) {
  25. super(context, attrs, defStyleAttr);
  26. onTouch();
  27. }
  28.  
  29.  
  30. private Rect rect;
  31. boolean touchedInside = true;
  32. private void onTouch()
  33. {
  34. setOnTouchListener(new OnTouchListener() {
  35. @Override
  36. public boolean onTouch(View v, MotionEvent event) {
  37. if(event.getAction() == MotionEvent.ACTION_DOWN){
  38. rect = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
  39. touchedInside = true;
  40. setColorFilter(getResources().getColor(R.color.imageButtonGrey));
  41. }
  42.  
  43. if(event.getAction() == MotionEvent.ACTION_MOVE){
  44. if(!rect.contains(v.getLeft() + (int) event.getX(), v.getTop() + (int) event.getY()))
  45. {
  46. //not in
  47. if(touchedInside)
  48. {
  49. setColorFilter(getResources().getColor(android.R.color.transparent));
  50. }
  51. touchedInside = false;
  52. }
  53. else
  54. {
  55. if(!touchedInside)
  56. {
  57. setColorFilter(getResources().getColor(R.color.imageButtonGrey));
  58. }
  59. touchedInside = true;
  60. }
  61. }
  62. if(event.getAction() == MotionEvent.ACTION_UP)
  63. {
  64. setColorFilter(getResources().getColor(android.R.color.transparent));
  65. if(touchedInside)
  66. {
  67. callOnClick();
  68. }
  69. }
  70. return true;
  71. }
  72. });
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement