it-swarm.com.de

Wie zeige ich imageView Vollbild auf imageView Klick?

Ich erhalte Bilder von URL und zeige sie auf der ImageView. Diese Funktionalität funktioniert einwandfrei. Aber ich möchte, dass, wenn ich auf dieses Bild klicke, es im Vollbildmodus sein muss. Wie erreicht man diese Funktionalität? Ich weiß, dass mir etwas fehlt. Bitte hilf mir. Screenshot ist beigefügt. Ich möchte auch die gleiche Funktionalität in meiner App. 

Before clickingAfter clicking

Hier ist mein Code, den ich mit Image click versuche:

    @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

Ja, ich habe den Trick bekommen.

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{}

    }

Aber es hat mein Problem nicht vollständig gelöst. Ich möchte auch die horizontale Bildlaufansicht ausblenden, die sich vor der Bildansicht (unten) befindet, die hier nicht ausgeblendet werden kann.

1
Amit Jayaswal

Sie können ImageView unter zwei Eigenschaften verwenden, um das Bild entsprechend Ihrer Anforderungen anzuzeigen: 

  1. Android: adjustViewBounds : Setzen Sie diese Option auf "true", wenn ImageView seine Grenzen anpassen soll, um das Seitenverhältnis der Zeichenfläche beizubehalten.

  2. Android: scaleType : Steuert, wie die Größe des Bildes geändert oder verschoben werden soll, um es an die Größe dieser ImageView anzupassen

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

Über zwei Eigenschaften kann entweder XML- oder Java-Code verwendet werden.

Da Sie sich zur Laufzeit entscheiden müssen, müssen Sie das Bild im Vollbildmodus anzeigen oder nicht. Dies gilt für die beiden folgenden Eigenschaften von Java-Code:

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

Immersiver Vollbildmodus verwenden

enter image description here

rufen Sie fullScreen() auf ImageView auf. 

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

Lese mehr

Beispiel Download

18
Mansukh Ahir

verwenden Sie die folgende Eigenschaft von ImageView für die volle Größe des Bildes 

 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) Schalten Sie andere Aktivitäten ein, wenn Sie auf das Bild klicken.

2) URL absichtlich übergeben

3) Nehmen Sie imageview für diese Aktivität vor und setzen Sie die obige Eigenschaft von imageview

4) Holen Sie die URL von der Absicht und stellen Sie das Bild ein.

wenn Sie dies verwenden, kann Ihr Bild jedoch gestärkt werden, wenn es klein ist.

12
MFP

Das hat bei mir nicht funktioniert, ich habe ein paar Codeteile aus dem Web verwendet, was ich getan habe:

neue Aktivität: FullScreenImage mit:

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

}   


}

Dann erstellen Sie eine 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>

Und schließlich senden Sie den Bildnamen aus Ihrer Hauptaktivität

   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

Verwenden Sie diese Eigenschaft für eine Bildansicht, z. B.

1) Android:scaleType="fitXY" - Dies bedeutet, dass die Bilder so gedehnt werden, dass sie zu allen Seiten des übergeordneten Elements passen, das auf Ihrer ImageView basiert.

2) Wenn Sie die obige Eigenschaft verwenden, wirkt sich dies auf Ihre Bildauflösung aus. Wenn Sie die Auflösung beibehalten möchten, fügen Sie eine Eigenschaft wie Android:scaleType="centerInside" hinzu.

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

Tatsächlich gibt es drei Möglichkeiten, um die vollständige Anzeige zu aktivieren: https://developer.Android.com/training/system-ui/immersive

wenn Sie jedoch beim Öffnen der Aktivität den Vollbildmodus aktivieren möchten, geben Sie diesen Code einfach in your_activity.Java ein

@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
Jhoan River
<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>

und in Aktivität

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

Das ist es!

0