How to show imageView full screen on imageView click?

后端 未结 10 600
暖寄归人
暖寄归人 2020-12-02 08:41

I am getting images from url and showing it on the imageView. This functionality is working properly. But I want that when I click on that image, then it must be full screen

相关标签:
10条回答
  • 2020-12-02 08:51

    Actually there are three ways to enable full screnn, visit : https://developer.android.com/training/system-ui/immersive

    but if you wanna get full screen when the activity is opened, just put this code in your_activity.java

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            hideSystemUI();
        }
    }
    
    private void hideSystemUI() {
        // Enables regular immersive mode.
        // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
        // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_IMMERSIVE
                // Set the content to appear under the system bars so that the
                // content doesn't resize when the system bars hide and show.
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                // Hide the nav bar and status bar
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN);
    }
    
    // Shows the system bars by removing all the flags
    // except for the ones that make the content appear under the system bars.
    private void showSystemUI() {
        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }
    
    0 讨论(0)
  • 2020-12-02 08:53

    Use Immersive Full-Screen Mode

    call fullScreen() on ImageView click.

     public void fullScreen() {
    
            // BEGIN_INCLUDE (get_current_ui_flags)
            // The UI options currently enabled are represented by a bitfield.
            // getSystemUiVisibility() gives us that bitfield.
            int uiOptions = getWindow().getDecorView().getSystemUiVisibility();
            int newUiOptions = uiOptions;
            // END_INCLUDE (get_current_ui_flags)
            // BEGIN_INCLUDE (toggle_ui_flags)
            boolean isImmersiveModeEnabled =
                    ((uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) == uiOptions);
            if (isImmersiveModeEnabled) {
                Log.i(TAG, "Turning immersive mode mode off. ");
            } else {
                Log.i(TAG, "Turning immersive mode mode on.");
            }
    
            // Navigation bar hiding:  Backwards compatible to ICS.
            if (Build.VERSION.SDK_INT >= 14) {
                newUiOptions ^= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
            }
    
            // Status bar hiding: Backwards compatible to Jellybean
            if (Build.VERSION.SDK_INT >= 16) {
                newUiOptions ^= View.SYSTEM_UI_FLAG_FULLSCREEN;
            }
    
            // Immersive mode: Backward compatible to KitKat.
            // Note that this flag doesn't do anything by itself, it only augments the behavior
            // of HIDE_NAVIGATION and FLAG_FULLSCREEN.  For the purposes of this sample
            // all three flags are being toggled together.
            // Note that there are two immersive mode UI flags, one of which is referred to as "sticky".
            // Sticky immersive mode differs in that it makes the navigation and status bars
            // semi-transparent, and the UI flag does not get cleared when the user interacts with
            // the screen.
            if (Build.VERSION.SDK_INT >= 18) {
                newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
            }
    
            getWindow().getDecorView().setSystemUiVisibility(newUiOptions);
            //END_INCLUDE (set_ui_flags)
        }
    

    Read more

    Example Download

    0 讨论(0)
  • 2020-12-02 08:53

    Use this property for an Image view such as,

    1) android:scaleType="fitXY" - It means the Images will be stretched to fit all the sides of the parent that is based on your ImageView!

    2) By using above property, it will affect your Image resolution so if you want to maintain the resolution then add a property such as android:scaleType="centerInside".

    0 讨论(0)
  • 2020-12-02 08:56
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="#000"
    android:gravity="center"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">  
    <ImageView
        android:scaleType="fitXY"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="60dp"
        android:src="@drawable/lwt_placeholder"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:adjustViewBounds="true"
        android:visibility="visible"
        android:id="@+id/imageView"
        android:layout_centerInParent="true"/></RelativeLayout>
    

    and in activity

     final ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);          
    
            PhotoViewAttacher photoAttacher;
            photoAttacher= new PhotoViewAttacher(imageView);
            photoAttacher.update();
    
            Picasso.with(ImageGallery.this).load(imageUrl).placeholder(R.drawable.lwt_placeholder)
                    .into(imageView);
    

    Thats it!

    0 讨论(0)
  • 2020-12-02 08:57
    public class MainActivity extends Activity {
    
    ImageView imgV;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        imgV= (ImageView) findViewById("your Image View Id");
    
        imgV.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                    imgV.setScaleType(ScaleType.FIT_XY);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    getSupportActionBar().hide();
                }
            }
        });
    
    }
    }
    
    0 讨论(0)
  • 2020-12-02 09:02

    That didn't work for me, I used some code parts from web, what I did:

    new activity: FullScreenImage with:

    package yourpackagename;
    import yourpackagename.R;
    
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class FullScreenImage  extends Activity {
    
    
    @SuppressLint("NewApi")
    
    
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        setContentView(R.layout.layout_full);
    
        Bundle extras = getIntent().getExtras();
        Bitmap bmp = (Bitmap) extras.getParcelable("imagebitmap");
    
        ImageView imgDisplay;
        Button btnClose;
    
    
        imgDisplay = (ImageView) findViewById(R.id.imgDisplay);
        btnClose = (Button) findViewById(R.id.btnClose);
    
    
       btnClose.setOnClickListener(new View.OnClickListener() {            
        public void onClick(View v) {
        FullScreenImage.this.finish();
    }
    });
    
    
     imgDisplay.setImageBitmap(bmp );
    
    }   
    
    
    }
    

    Then create a xml: layout_full

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <ImageView
        android:id="@+id/imgDisplay"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scaleType="fitCenter" />
    
    <Button
        android:id="@+id/btnClose"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="15dp"
        android:layout_marginTop="15dp"
        android:paddingTop="2dp"
        android:paddingBottom="2dp"
        android:textColor="#ffffff"
        android:text="Close" />
    
       </RelativeLayout>
    

    And finally, send the image name from your mainactivity

       final ImageView im = (ImageView)findViewById(R.id.imageView1) ; 
       im.setBackgroundDrawable(getResources().getDrawable(id1));
    
       im.setOnClickListener(new OnClickListener() {
    
          @Override
           public void onClick(View view) {
           Intent intent = new Intent(NAMEOFYOURCURRENTACTIVITY.this, FullScreenImage.class);
    
           im.buildDrawingCache();
           Bitmap image= im.getDrawingCache();
    
           Bundle extras = new Bundle();
           extras.putParcelable("imagebitmap", image);
           intent.putExtras(extras);
           startActivity(intent);
    
                                    }
                                });
    
    0 讨论(0)
提交回复
热议问题