web-dev-qa-db-fra.com

Comment afficher imageView en plein écran sur imageView click?

Je reçois des images à partir de l'URL et je les montre sur l'imageView. Cette fonctionnalité fonctionne correctement. Mais je veux que quand je clique sur cette image, alors elle doit être en plein écran. Alors, comment réaliser cette fonctionnalité? Je sais que je manque quelque chose. Aidez-moi, s'il vous plaît. La capture d'écran est jointe. Je veux la même fonctionnalité dans mon application aussi. 

Before clickingAfter clicking

Voici mon code, sur lequel j'essaye. Cliquez sur l'image:

    @Override
    public void onClick(View v) {
        if (isTouch1) {
            horizontalScrollView.setVisibility(View.GONE);
            isTouch1 = false;
            // mSystemUiHider.toggle();
            setTheme(R.style.FullscreenTheme);
            Log.d("Here isTouch is true", ">");
            // ChangeThemeUtils.changeToTheme(FullScreenImageAdapter.this, ChangeThemeUtils.THEME_HIDE_ALL_WINDOW);
            getSupportActionBar().hide();

        } else {
            isTouch1 = true;
            horizontalScrollView.setVisibility(View.VISIBLE);
            getSupportActionBar().show();
            setTheme(R.style.ExampleTheme);
            //mSystemUiHider.show();
            Log.d("Here isTouch is false", ">");    
        }
    }
29
Amit Jayaswal

Oui j'ai le truc.

public void onClick(View v) {

            if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH ){
                imgDisplay.setSystemUiVisibility( View.SYSTEM_UI_FLAG_HIDE_NAVIGATION );

            }
            else if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
                imgDisplay.setSystemUiVisibility( View.STATUS_BAR_HIDDEN );
            else{}

    }

Mais cela n'a pas résolu mon problème complètement. Je veux aussi masquer la vue de défilement horizontale, qui se trouve devant l'imageView (ci-dessous), qui ne peut pas être masquée.

1
Amit Jayaswal

Vous pouvez utiliser ImageView ci-dessous deux propriétés pour afficher l'image en fonction de vos besoins: 

  1. Android: adjustViewBounds : Définissez ceci sur true si vous souhaitez que ImageView ajuste ses limites pour conserver le rapport de format de son dessin.

  2. Android: scaleType : Contrôle la manière dont l'image doit être redimensionnée ou déplacée pour correspondre à la taille de cette ImageView.

    <ImageView
        Android:id="@+id/imageView"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:adjustViewBounds="true"
        Android:src="@drawable/ic_launcher"/>
    

Au-dessus de deux propriétés peuvent être utiliser soit le code XML ou Java.

Comme vous devez décider au moment de l'exécution, vous devez afficher l'image en plein écran ou non. Par conséquent, les propriétés ci-dessus s'appliquent au code Java, comme indiqué ci-dessous:

public class MainActivity extends Activity {

    ImageView imageView;

    boolean isImageFitToScreen;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = (ImageView) findViewById(R.id.imageView);

        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(isImageFitToScreen) {
                    isImageFitToScreen=false;
                    imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                    imageView.setAdjustViewBounds(true);
                }else{
                    isImageFitToScreen=true;
                    imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
                    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                }
            }
        });

    }
}
27
Haresh Chhelana

Utiliser le mode plein écran immersif

enter image description here

appelez 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)
    }

Lire plus

Exemple Télécharger

18
Mansukh Ahir

utiliser la propriété suivante de ImageView pour une taille d'image complète 

 Android:scaleType="fitXY"

ex:

      <ImageView
        Android:id="@+id/tVHeader2"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:scaleType="fitXY"
        Android:gravity="center"
        Android:src="@drawable/done_sunheading" />

1) Allumez une autre activité lorsque vous cliquez sur l'image.

2) passer l'URL dans l'intention

3) Prendre imageview sur cette activité et définir la propriété ci-dessus de imageview

4) Obtenez l'URL d'intention et définissez cette image.

mais en utilisant ceci, votre image peut être amidonnée si elle est de petite taille.

12
MFP

Cela n'a pas fonctionné pour moi, j'ai utilisé des parties de code Web, ce que j'ai fait:

nouvelle activité: FullScreenImage avec:

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 );

}   


}

Puis créez un 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>

Et enfin, envoyez le nom de l'image de votre activité principale

   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);

                                }
                            });
7
ainos

Utilisez cette propriété pour une vue Image telle que,

1) Android:scaleType="fitXY" - Cela signifie que les images seront étirées pour s’adapter à tous les côtés du parent en fonction de votre ImageView!

2) L'utilisation de la propriété ci-dessus affectera la résolution de votre image. Si vous souhaitez conserver la résolution, ajoutez une propriété telle que Android:scaleType="centerInside".

3
Achiever
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
Rajaji subramanian
<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>

et en activité

 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);

C'est tout!

0
Raktim Bhattacharya