所以我想做的就是触摸隐藏隐形视图的屏幕的某个部分。
触摸后,视图应淡入。 问题:当我触摸视图时,不会触发监听器。
我尝试过的东西: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);
希望这有帮助。
答案 0 :(得分:7)
INVISBLE
表示您正在尝试将侦听器添加到不存在的视图中。您只能将侦听器添加到可见视图中。
解决方法强>
1)尝试制作一个可见但与背景颜色相同的虚拟视图。
2)尝试设置父级的监听器并检查位置(位置是否确实) 属于INVISIBLE视图)。
答案 1 :(得分:1)
onTouchListener
不会触发隐身View
。您可以将2个完全相同的视图放在另一个下面的视图下面。它将是可见的,因此它可以被触摸,但它将被上面的视图模糊,就像它们在这里一样:http://blahti.wordpress.com/2012/06/26/images-with-clickable-areas/
答案 2 :(得分:0)
在你的xml中试试这个:
<View
android:id="@+id/my_inv_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/blue"
/>
<View
android:id="@+id/my_touch_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
并设置点击监听器,如下所示:
final View mTouchView = findViewById(R.id.my_touch_view);
final View mInvView = findViewById(R.id.my_inv_view);
mInvView.setVisibility(View.INVISIBLE);
mTouchView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mInvView.setVisibility(View.VISIBLE);
}
});