Android, когда экран тускнеет, добавляет слой поверх всего, чтобы потреблять щелчок

В моем приложении я хочу, чтобы при затемнении экрана добавлялся слой поверх всего, поэтому, когда пользователи нажимают на экран, затемнение исчезает, и тогда он может использовать приложение. Если я не сделаю этого, когда экран затемнен и пользователь нажмет на экран, он активирует что-то в приложении.

<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" />

this is my layout. When the screen dims i make the disc visible and when the user touches something on screen I make it View.gone. The problem is that the click on the disc is also activating something on my content frame fragment.

Есть ли способ сделать это сейчас? Я хочу, чтобы щелчок активировал только диск onclickhandler, а не что-то еще. Или есть другой способ сделать это?


person Alex Fragotsis    schedule 20.02.2014    source источник


Ответы (1)


Итак, я понял, как это сделать. Хитрость заключается в том, чтобы иметь 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.

person Alex Fragotsis    schedule 21.02.2014