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.
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", ">");
}
}
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.
Vous pouvez utiliser ImageView ci-dessous deux propriétés pour afficher l'image en fonction de vos besoins:
Android: adjustViewBounds : Définissez ceci sur true si vous souhaitez que ImageView ajuste ses limites pour conserver le rapport de format de son dessin.
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);
}
}
});
}
}
Utiliser le mode plein écran immersif
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
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.
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);
}
});
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"
.
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();
}
}
});
}
}
<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!