【发布时间】:2014-08-13 16:58:49
【问题描述】:
所以我想做的就是触摸屏幕的某个部分,其中隐藏了一个不可见的视图。
触摸之后,视图应该会淡入。 问题:当我触摸视图时,Listener 没有被触发。
我尝试过的方法:view.setImageAlpha(0)、view.setAlpha(0)、view.setVisibility(View.INVISIBLE) 当我设置 alpha=1 时,监听器工作正常。
提前致谢。
编辑: 感谢@Viswanath L 提供的出色解决方案,他在帖子中提到了第二个解决方法。
我只是想给出一个小代码示例,以防有人不知道它是如何工作的:
我想要什么:我想触摸屏幕的右上角,在这个位置,一个视图(myView)应该淡入。
fadeInListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
System.out.println("TRIGGERED");
//The screen size here is 1080x1920(vertical)
if (event.getRawX() > 800 && event.getRawY() > 1640) {
final AlphaAnimation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setDuration(500);
fadeIn.setFillAfter(true);
myView.startAnimation(fadeIn);
}
}
return false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layout.setOnTouchListener(fadeInListener);
}
布局是:
this.layout = (RelativeLayout) findViewById(R.id.layout);
而myView应该放在最右边的角落,很重要:
myView.setVisibility(View.Gone);
希望这会有所帮助。
【问题讨论】:
-
你能保持它可见,但改变背景颜色、字体颜色等...以匹配背景,使其不可见?
-
并非如此。我能做的是放置一个带有 bg 颜色的视图,然后让这个视图淡出,所以看起来我原来的“隐藏”视图淡入了。这将是我的解决方法,但如果有任何更清洁的方法,比如特殊的东西可见性或 alpha 选项来完成这项工作,那就太好了。
-
android:alpha=0 与监听器配合得很好。
标签: android animation view listener invisible