Android屏幕变暗时在Android上面添加一层以消耗onclick

时间:2014-02-20 13:36:00

标签: android screen layer drawerlayout

在我的应用程序中,我希望当屏幕变暗时在所有内容上方添加一层,这样当用户点击屏幕时,暗淡将会消失,然后他就可以使用该应用程序。如果我在屏幕变暗并且用户点击屏幕时不这样做,他将在应用程序中激活一些内容。

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<!-- The main content view -->

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:id="@+id/radio_frame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </FrameLayout>

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </FrameLayout>
</LinearLayout>

<LinearLayout
    android:id="@+id/disc"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    android:gravity="center"
    android:visibility="gone"
    android:orientation="vertical" />

<!-- The navigation drawer -->

<ListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#ffffff"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="10dp" />

这是我的布局。当屏幕变暗时,我可以看到光盘,当用户触摸屏幕上的内容时,我将其设为View.gone。问题是光盘上的点击也激活了我的内容帧片段上的某些内容。

有没有办法让它现在发生?我希望点击只激活光盘onclickhandler而不是其他任何东西。或者还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

所以我想出了如何做到这一点。诀窍是在视图本身上有一个onclickListener。当我不得不点击时,我只是让它消失了。

private final Runnable disconnectCallback = new Runnable() {

    @Override
    public void run() {
        runOnUiThread(new Thread(new Runnable() {

            @Override
            public void run() {
                disconnect.setVisibility(View.VISIBLE);
            }
        }));

    }
};

private static final Handler disconnectHandler = new Handler() {

    @Override
    public void handleMessage(Message msg) {
    }
};

public void resetDisconnectTimer() {
    disconnectHandler.removeCallbacks(disconnectCallback);
    disconnectHandler.postDelayed(disconnectCallback, 3000);

}

public void stopDisconnectTimer() {
    disconnectHandler.removeCallbacks(disconnectCallback);
}

@Override
public void onUserInteraction() {
    resetDisconnectTimer();
}

@Override
public void onResume() {
    super.onResume();
    resetDisconnectTimer();
}

在onCreate中我有这个

 disconnect = findViewById(R.id.disc);
    disconnect.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            disconnect.setVisibility(View.GONE);

        }
    });

在我之前的尝试中,我在处理程序内部“断开连接”。现在我有一个onclick听众。