Сделайте ImageView полноэкранным по клику - PullRequest
0 голосов
/ 21 января 2019

У меня есть вид с двумя изображениями

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/top_section"
        android:orientation="vertical"
        android:layout_marginTop="120dp">

    <ImageView
            android:layout_width="match_parent"
            android:layout_height="170dp"
            android:id="@+id/top_image"/>

    <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/top_text"/>
</LinearLayout>

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/bottom_section"
        android:orientation="vertical"
        android:layout_alignParentBottom="true">

    <ImageView
            android:layout_width="match_parent"
            android:layout_height="170dp"
            android:id="@+id/bottom_image"/>

    <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/bottom_text"/>
</LinearLayout>

Я хотел бы сделать так, чтобы, если пользователь щелкает мышью на изображении, оно становилось полноэкранным и вращалось правильно для перехода в полноэкранный режим.

Пока я пробовал (например, если щелкнуть верхнюю часть)

topText.setVisibility(View.GONE)
bottomSection.setVisibility(View.GONE)
getSupportActionBar().hide();
getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

Но изображение на самом деле не на весь экран. Как бы я сделал изображение на весь экран? Я думал о том, чтобы, возможно, иметь третье изображение и сделать его соответствующим родителю по ширине и высоте, чтобы оно стало видимым при клике.

1 Ответ

0 голосов
/ 21 января 2019

Создайте другое действие с именем ImageZoomedActivity, передайте ему данные изображения через намерение (это может быть URL, локальное расположение файла и т. Д.) И в методе OnCreate:

requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.popup_photo_full);
    supportPostponeEnterTransition();
    if(getIntent().hasExtra("file")) {
        imageFile = new File(getIntent().getStringExtra("file"));
        GlideApp.with(this).asBitmap()
                .load(imageFile)
                .into(image);
        supportStartPostponedEnterTransition();
    }

Приведенный выше код работает с URI локального файла, переданного через намерение.

Эти две строки

requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

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

...