如何在点击时以编程方式制作ImageView全屏?

时间:2015-08-17 15:36:52

标签: android android-layout

我知道这个问题在这里问过几次,但我找不到符合我需要的东西。

所以这就是我想要做的事情。我有4张图片,它们在一个LinearLayout中,而LinearLayoutRelativeLayout的孩子。我已成功实施onClickListener。也许我的问题有点不同,但一切都是相关的。

我不知道如何将图片扩展到全屏,因为图片位于LinearLayout内的RelativeLayout内,当我向您展示xml代码时,一切都会清晰

我想点击ImageView全屏,并且当我点击后退按钮时能够返回。为此,我可能需要使用onBackPressed

图片位于底部。

所以这是xml代码

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android" 
    >

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/url"
        android:fillViewport="true"
        android:orientation="vertical"
        android:paddingBottom="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingTop="5dp"
        android:scrollbars="none" >

        <RelativeLayout                   
            android:id="@+id/relativeLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <!-- Thumbnail Image -->

            <com.dusandimitrijevic.modification.TouchImageView
                android:id="@+id/thumbnail"
                android:layout_width="140dp"
                android:layout_height="220dp"
                android:layout_alignParentLeft="true"
                android:layout_marginRight="8dp"
                android:src="@drawable/ic_horor_filmovi_ikonica" />

            <!-- Naslov Filma -->
            <TextView
                android:id="@+id/naslov"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:textColor="#7F0000"
                android:textSize="@dimen/title_movie"
                android:layout_toRightOf="@id/thumbnail"
                android:layout_toEndOf="@+id/thumbnail" >

            </TextView>
            <!-- Godina izdanja Filma -->
            <TextView
                android:id="@+id/releaseYear"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/naslov"
                android:layout_alignStart="@+id/naslov"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_below="@+id/naslov"
                android:layout_marginTop="3dp"
                android:textColor="@color/dark_red" />

            <ImageView
                android:id="@+id/rating_star"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/thumbnail"
                android:layout_marginBottom="42dp"
                android:layout_toRightOf="@+id/thumbnail"
                android:layout_toEndOf="@+id/thumbnail"
                android:src="@drawable/ic_actions_rating_icon" />

            <Button
                android:id="@+id/url_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/thumbnail"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_toRightOf="@+id/thumbnail"
                android:layout_toEndOf="@+id/thumbnail"
                style="@style/UrlDugme" />

            <TextView
                android:id="@+id/rating"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/rating_star"
                android:layout_alignTop="@+id/rating_star"
                android:layout_toRightOf="@+id/rating_star"
                android:layout_toEndOf="@+id/rating_star"
                android:gravity="center"
                android:textColor="@color/dark_red"
                android:textSize="@dimen/rating" />

            <!-- Opis Filma -->
            <RelativeLayout
                android:id="@+id/relativeLayout1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/thumbnail"
                android:layout_marginTop="14dp"
                android:background="@drawable/layout_round_rect_shape" >

                <TextView
                    android:id="@+id/description"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:layout_marginLeft="18dp"
                    android:layout_marginTop="16dp"
                    android:scrollbars="vertical"
                    android:textColor="@color/dark_red"
                    android:textSize="18sp" />
            </RelativeLayout>
            <!-- Opis Filma Zavrsetak -->


            <!-- Glumci -->
            <RelativeLayout
                android:id="@+id/relativeLayout2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/relativeLayout1"
                android:layout_marginTop="12dp"
                android:background="@drawable/layout_round_rect_shape"
                android:orientation="vertical" >

                <LinearLayout
                    android:id="@+id/linearLayoutActors"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal" >

                    <com.android.volley.toolbox.NetworkImageView
                        android:id="@+id/Image1"
                        android:layout_width="40dp"
                        android:layout_height="140dp"
                        android:layout_gravity="center_horizontal"
                        android:layout_marginTop="16dp"
                        android:layout_weight="1"
                        android:scaleType="fitCenter"
                        android:src="@drawable/ic_horor_filmovi_ikonica" />

                    <com.android.volley.toolbox.NetworkImageView
                        android:id="@+id/Image2"
                        android:layout_width="40dp"
                        android:layout_height="140dp"
                        android:layout_gravity="center_horizontal"
                        android:layout_marginTop="16dp"
                        android:layout_weight="1"
                        android:scaleType="fitCenter"
                        android:src="@drawable/ic_horor_filmovi_ikonica" />

                    <com.android.volley.toolbox.NetworkImageView
                        android:id="@+id/Image3"
                        android:layout_width="40dp"
                        android:layout_height="140dp"
                        android:layout_gravity="center_horizontal"
                        android:layout_marginTop="16dp"
                        android:layout_weight="1"
                        android:scaleType="fitCenter"
                        android:src="@drawable/ic_horor_filmovi_ikonica" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/linearLayoutTextView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/linearLayoutActors"
                    android:orientation="horizontal" >

                    <TextView
                        android:id="@+id/ime1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:text="Ime"
                        android:textColor="#7F0000"
                        android:textSize="16sp" />

                    <TextView
                        android:id="@+id/ime2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:text="Ime"
                        android:textColor="#7F0000"
                        android:textSize="16sp" />

                    <TextView
                        android:id="@+id/ime3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:text="Ime"
                        android:textColor="#7F0000"
                        android:textSize="16sp" />
                </LinearLayout>
            </RelativeLayout>
            <!-- Glumci -->

                    <!-- IMAGES I WANT TO MAKE FULLSCREEN ON CLICK -->
                    <LinearLayout
                        android:layout_marginTop="12dp"
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:background="@drawable/layout_round_rect_shape"
                        android:id="@+id/linearLayoutImages"
                        android:layout_below="@+id/relativeLayout2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal" >

                            <com.dusandimitrijevic.modification.TouchImageView
                                android:id="@+id/image1"
                                android:adjustViewBounds="true"
                                android:layout_weight="1"
                                android:layout_width="115dp"
                                android:layout_height="150dp"
                                android:src="@drawable/ic_horor_filmovi_ikonica" >
                            </com.dusandimitrijevic.modification.TouchImageView>    

                            <com.dusandimitrijevic.modification.TouchImageView
                                android:id="@+id/image2"
                                android:adjustViewBounds="true"
                                android:layout_weight="1"
                                android:layout_width="115dp"
                                android:layout_height="150dp"
                                android:src="@drawable/ic_horor_filmovi_ikonica" >
                            </com.dusandimitrijevic.modification.TouchImageView>

                            <com.dusandimitrijevic.modification.TouchImageView
                                android:id="@+id/image3"
                                android:adjustViewBounds="true"
                                android:layout_weight="1"
                                android:layout_width="115dp"
                                android:layout_height="150dp"
                                android:src="@drawable/ic_horor_filmovi_ikonica" >
                           </com.dusandimitrijevic.modification.TouchImageView>     

                            <com.dusandimitrijevic.modification.TouchImageView
                                android:id="@+id/image4"
                                android:adjustViewBounds="true"
                                android:layout_weight="1"
                                android:layout_width="115dp"
                                android:layout_height="150dp"
                                android:src="@drawable/ic_horor_filmovi_ikonica" >
                            </com.dusandimitrijevic.modification.TouchImageView>                                                    

                    </LinearLayout>
                    <!-- IMAGES I WANT TO MAKE FULLSCREEN ON CLICK -->

        </RelativeLayout>

    </ScrollView>       

</RelativeLayout>

这里是onClickListener:

image1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 115, getResources().getDisplayMetrics());
            int px1 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 150, getResources().getDisplayMetrics());
            LinearLayout.LayoutParams p = new LinearLayout.
                    LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            p.weight = 1;
            if(isImageFitToScreen) {
                image1.setMinimumWidth(px);
                image1.setMinimumHeight(px1);
                image1.setAdjustViewBounds(true);
                isImageFitToScreen=false;
            }else{
                image1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
                image1.setScaleType(ImageView.ScaleType.FIT_XY);
                isImageFitToScreen=true;
            }
        }
    });

2 个答案:

答案 0 :(得分:4)

欢迎来到堆栈溢出Dusan,

我有一些非常相似的东西,但我所做的只是将全屏图像放入一个新的活动&amp;将图像传递为字节&amp;将其显示在完整的屏幕图像视图中。他们一回按,就会回到原来的状态。我认为尝试更改布局参数在这里有点过分了。

答案 1 :(得分:4)

为了提供Ben的答案的替代方案并充实我之前的评论,一种可能性是在ImageView中创建占据整个屏幕的xml,其可见性设置为gone。按下按钮,将图像加载到此ImageView,然后在背面按下,再次将可见性设置为gone

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android" 
    >

    <ScrollView>
        <!-- Everything else! -->
    </ScrollView>       

    <ImageView
        android:id="@+id/full_screen_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone" />

</RelativeLayout>

Activity onCreate()方法中:

@Override
public void onCreate(Bundle mySavedInstances) {
  ImageView fullScreenContainer = (ImageView) findViewById(R.id.full_screen_container);

  image1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //However it is you load your images
            fullScreenContainer.setImageDrawawble(R.drawable.example);
            fullScreenContainer.setVisibility(View.VISIBLE);
        }
  });
}

@Override
public void onBackPressed() {
    if (fullScreenContainer.getVisibility() == View.VISIBLE) {
        fullScreenContainer.setImageDrawable(null);
        fullScreenContainer.setVisibility(View.GONE);
    } else {
        super.onBackPressed();
    }
}