单击使全屏ImageView

时间:2019-01-21 16:35:28

标签: android android-layout imageview android-imageview fullscreen

我有两个图像的视图

<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 :(得分:1)

创建另一个名为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);

让您以全屏方式进行活动。 也可以在带有缩略图的第一个活动和带有全屏图像的第二个活动之间进行转换。如果您想了解更多信息,请给我发一个下午,我可以给您发送详细的代码。