2012-01-23 67 views
3

我在用户界面中有一个视图,在技术上是RelativeLayout内的扩展ImageView,如果可能的话,我宁愿不改变它。当用户点击屏幕(甚至有onShowPress回调)时,我想在特定坐标处显示来自资源(带有渐变或框架的小PNG)的Drawable作为视觉反馈。什么是最简单的方法来做到这一点?我不想修改UI膨胀的layout.xml,我也不太热衷于重写onDraw在那里做额外的工作。如何在用户点击ImageView时提供视觉反馈?

回答

4

这是一个简单的方法使用视图动画类来做到这一点:

final ImageView aboutButton = (ImageView) findViewById(R.id.AboutButton); 
aboutButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    Animation myAnim2 = AnimationUtils.loadAnimation(LaunchActivity.this, R.anim.buttons);    
    aboutButton.startAnimation(myAnim2); 
    myAnim2.setAnimationListener(new AnimationListener() { 
     public void onAnimationEnd(Animation animation) { 

     //do on click after animation ends 
     Intent intent = new Intent(LaunchActivity.this, MyDialog.class); 
     startActivity(intent); 
     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 

     @Override 
     public void onAnimationStart(Animation animation) { 
     //change the backround of the button etc on click etc...        
     } 
    });          
}}); 
+0

不适合ImageView的好,因为我不能改变的背景什么的。但是,感谢这个想法。 –

+1

再次仔细阅读您的问题后,我认为最简单的方法是将它绘制在您的自定义视图中,因为它已经为它设置了一切。否则,您可以在RelativeLayout中使用其左侧和顶部边距在自定义顶部添加图像视图,但必须观察不同的屏幕尺寸...... – Lumis

+0

我认为您是对的,这是最简单的方法。我扩展了我的onDraw方法,在原始图像上的同一个画布上绘制图像。 –

相关问题