2011-03-05 4 views
1

Je veux agrandir l'image dans l'image Cliquez sur Événement. Comment puis-je faire cela. Voici mon code completAgrandir Image sur l'image click Evénement

Main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_height="fill_parent" android:layout_width="fill_parent" > 

    <LinearLayout android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <Button android:text="Button1" android:id="@+id/button1" android:layout_height="wrap_content" android:layout_width="wrap_content" ></Button> 
     <Button android:text="Button2" android:id="@+id/button2" android:layout_height="wrap_content" android:layout_width="wrap_content" ></Button> 
     <Button android:text="Button3" android:id="@+id/button3" android:layout_height="wrap_content" android:layout_width="wrap_content" ></Button> 

    </LinearLayout> 

    <LinearLayout android:orientation="horizontal" 
        android:layout_height="290dp" 
        android:layout_width="wrap_content" 
        android:layout_gravity="center_horizontal"> 

      <ImageView android:id="@+id/contentImage" 
         android:layout_height="250dp" 
         android:layout_width="200dp" 
         /> 


    </LinearLayout> 

    <LinearLayout android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageView android:id="@+id/imageView1" android:src="@drawable/img1" android:layout_height="75dp" android:layout_width="75dp" ></ImageView> 
     <ImageView android:id="@+id/imageView2" android:src="@drawable/img2" android:layout_height="75dp" android:layout_width="75dp" ></ImageView> 
     <ImageView android:id="@+id/imageView3" android:src="@drawable/img3" android:layout_height="75dp" android:layout_width="75dp" ></ImageView> 

    </LinearLayout> 

</LinearLayout> 

Entendre est mon dossier principal Image.java dans lequel sur l'événement sera traité

package com.example; 


import android.app.Activity; 

import android.graphics.Matrix; 
import android.graphics.PointF; 
import android.os.Bundle; 
import android.view.GestureDetector; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.Toast; 

public class Image extends Activity 
{ 
    public ImageView img1,img2,img3; 
    ImageView contentImage; 
    boolean click1=true; 
    boolean click2=true; 
    boolean click3=true; 
    boolean imageTouch=false; 



    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button btn1=(Button)findViewById(R.id.button1); 
     Button btn2=(Button)findViewById(R.id.button2); 
     Button btn3=(Button)findViewById(R.id.button3); 

     img1=(ImageView)findViewById(R.id.imageView1); 
     img2=(ImageView)findViewById(R.id.imageView2); 
     img3=(ImageView)findViewById(R.id.imageView3); 
     contentImage=(ImageView)findViewById(R.id.contentImage); 

     img1.setAlpha(100); 
     img2.setAlpha(100); 
     img3.setAlpha(100); 


     btn1.setOnClickListener(new View.OnClickListener() 
     { 

      @Override 
      public void onClick(View arg0) 
      { 
        if (click1) 
       { 
        img1.setAlpha(255); 
        img2.setAlpha(100); 
        img3.setAlpha(100); 
        click1=false; 
       } 
       else 
       { 
        img1.setAlpha(255); 
        img2.setAlpha(100); 
        img3.setAlpha(100); 
        click1=true; 
       } 

       contentImage.setImageDrawable(null); 

      } 

     }); 
     btn2.setOnClickListener(new View.OnClickListener(){ 

      @Override 
      public void onClick(View arg0) 
      { 

       if (click2) 
       { 
        img1.setAlpha(100); 
        img2.setAlpha(255); 
        img3.setAlpha(100); 
        click2=false; 
       } 
       else 
       { 
        img1.setAlpha(80); 
        img2.setAlpha(255); 
        img3.setAlpha(80); 
        click2=true; 
       } 
      contentImage.setImageDrawable(null); 

      } 

     }); 


     btn3.setOnClickListener(new View.OnClickListener(){ 

      @Override 
      public void onClick(View arg0) 
      { 

       if (click3) 
       { 
        img1.setAlpha(100); 
        img2.setAlpha(100); 
        img3.setAlpha(255); 
        click3=false; 
       } 
       else 
       { 
        img1.setAlpha(100); 
        img2.setAlpha(100); 
        img3.setAlpha(255); 
        click3=true; 
       } 
       contentImage.setImageDrawable(null); 

      } 

     }); 

     img1.setOnClickListener(new OnClickListener() 
     { 

     @Override 
     public void onClick(View v) 
     { 

      if (click1) 
      { 
       img1.setAlpha(255); 
       img2.setAlpha(100); 
       img3.setAlpha(100); 
       click1=false; 
      } 
      else 
      { 
       img1.setAlpha(255); 
       img2.setAlpha(100); 
       img3.setAlpha(100); 
       click2=true; 
      } 


      contentImage.setImageResource(R.drawable.img1); 

     } 
    }); 

     img2.setOnClickListener(new OnClickListener() 
     { 

     @Override 
     public void onClick(View v) 
     { 
      if (click2) 
      { 
       img1.setAlpha(100); 
       img2.setAlpha(255); 
       img3.setAlpha(100); 
       click2=false; 
      } 
      else 
      { 
       img1.setAlpha(80); 
       img2.setAlpha(255); 
       img3.setAlpha(80); 
       click2=true; 
      } 
      contentImage.setImageResource(R.drawable.img2); 

     } 
    }); 
     img3.setOnClickListener(new OnClickListener() 
     { 

     @Override 
     public void onClick(View v) 
     { 
      if (click3) 
      { 
       img1.setAlpha(100); 
       img2.setAlpha(100); 
       img3.setAlpha(255); 
       click3=false; 
      } 
      else 
      { 
       img1.setAlpha(100); 
       img2.setAlpha(100); 
       img3.setAlpha(255); 
       click3=true; 
      } 
      contentImage.setImageResource(R.drawable.img3); 

     } 
    });  

     contentImage.setOnClickListener(new OnClickListener() 
     { 

     public void onClick(View v) 
     { 
      try 
      { 
      Toast.makeText(Image.this,"hello",Toast.LENGTH_SHORT); 
      contentImage.setMinimumHeight(400); 
      contentImage.setMinimumWidth(700); 

      imageTouch=true; 
      } 
      catch(Exception e) 
      { 
       System.out.println("Exception Raise......................."); 
      } 
     } 
    }); 

    }//onCreate Method over..... 


} 
+0

Salut Nirav Bhaandari ... Merci beaucoup. Ce code m'a vraiment aidé. J'ai trouvé la solution dans mon application. –

Répondre

6

Avez-vous essayé avec galerie et une vue d'image?

<RelativeLayout> 
    <ImageView android:id="@+id/BigView" android:layout_width="XXdip" android:layout_height="XXdip" android:scaleType="fitCenter" /> 
    <Gallery android:id="@+id/MyGallery" android:unselectedAlpha="0.5" android:layout_below="@id/BigView" android:layout_height="XXdip" /> 
</RelativeLayout> 

Vous devez spécifier une hauteur pour votre galerie. Et vous ajoutez un OnItemSelectedListener. Avec le scaleType fitCenter, votre image sera adaptée à la taille de l'image en conservant le format d'image. Donc, définissez directement la grande taille.

Sinon, vous pouvez ajouter un ImageView dans le RelativeLayout à fill_parent fois la taille de la mise en page et définir la visibilité à parti, ajouter:

i.setOnClickListener(new OnClickLisyener() { 
    MyHiddenImageView.setImageResource(p[g.getSelectedItemPosition()]); 
    MyHiddenImageView.setVisibility(View.VISIBLE); 
}); 
+0

La [Gallery] (http://developer.android.com/reference/android/widget/Gallery.html) View a été abandonnée au niveau 16 de l'API. – lschlessinger

2

Merci beaucoup ... Votre code est utile pour moi ... Je l'ai fait mon travail avec la suite Code..And Son travail

voici mon code ..

main.xml

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

<LinearLayout android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <Button android:text="Button1" android:id="@+id/button1" android:layout_height="wrap_content" android:layout_width="wrap_content" ></Button> 
    <Button android:text="Button2" android:id="@+id/button2" android:layout_height="wrap_content" android:layout_width="wrap_content" ></Button> 
    <Button android:text="Button3" android:id="@+id/button3" android:layout_height="wrap_content" android:layout_width="wrap_content" ></Button> 

</LinearLayout> 

<LinearLayout android:orientation="horizontal" 
       android:layout_height="290dp" 
       android:layout_width="wrap_content" 
       android:layout_gravity="center_horizontal"> 

     <ImageView android:id="@+id/contentImage" 
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent" 
        android:scaleType="matrix" 
        /> 


</LinearLayout> 

<LinearLayout android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <ImageView android:id="@+id/imageView1" android:src="@drawable/img1" android:layout_height="75dp" android:layout_width="75dp" ></ImageView> 
    <ImageView android:id="@+id/imageView2" android:src="@drawable/img2" android:layout_height="75dp" android:layout_width="75dp" ></ImageView> 
    <ImageView android:id="@+id/imageView3" android:src="@drawable/img3" android:layout_height="75dp" android:layout_width="75dp" ></ImageView> 

</LinearLayout> 

Voici mon dossier principal d'activité. Image.java

package com.example; 


import android.app.Activity; 
import android.content.Context; 
import android.graphics.Matrix; 
import android.graphics.PointF; 
import android.os.Bundle; 
import android.util.FloatMath; 
import android.view.GestureDetector; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 

public class Image extends Activity 
{ 
public ImageView img1,img2,img3; 
public static ImageView contentImage; 
boolean click1=true; 
boolean click2=true; 
boolean click3=true; 
boolean imageTouch=false; 
Context myContext=Image.this; 
Matrix matrix = new Matrix(); 
Matrix savedMatrix = new Matrix(); 
PointF start=new PointF(); 
PointF mid = new PointF(); 
float oldDist = 1f; 


static final int NONE = 0; 
static final int DRAG = 1; 
static final int ZOOM = 2; 

int mode = NONE; 

public GestureDetector mDetector; 

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mDetector = new GestureDetector(Image.this,new MyGestureDetector(Image.this)); 

    Button btn1=(Button)findViewById(R.id.button1); 
    Button btn2=(Button)findViewById(R.id.button2); 
    Button btn3=(Button)findViewById(R.id.button3); 

    img1=(ImageView)findViewById(R.id.imageView1); 
    img2=(ImageView)findViewById(R.id.imageView2); 
    img3=(ImageView)findViewById(R.id.imageView3); 
    contentImage=(ImageView)findViewById(R.id.contentImage); 


    img1.setAlpha(100); 
    img2.setAlpha(100); 
    img3.setAlpha(100); 


    btn1.setOnClickListener(new View.OnClickListener() 
    { 

     @Override 
     public void onClick(View arg0) 
     { 
       if (click1) 
      { 
       img1.setAlpha(255); 
       img2.setAlpha(100); 
       img3.setAlpha(100); 
       click1=false; 
      } 
      else 
      { 
       img1.setAlpha(255); 
       img2.setAlpha(100); 
       img3.setAlpha(100); 
       click1=true; 
      } 


     } 

    }); 

    btn2.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View arg0) 
     { 

      if (click2) 
      { 
       img1.setAlpha(100); 
       img2.setAlpha(255); 
       img3.setAlpha(100); 
       click2=false; 
      } 
      else 
      { 
       img1.setAlpha(80); 
       img2.setAlpha(255); 
       img3.setAlpha(80); 
       click2=true; 
      } 

     } 

    }); 


    btn3.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View arg0) 
     { 

      if (click3) 
      { 
       img1.setAlpha(100); 
       img2.setAlpha(100); 
       img3.setAlpha(255); 
       click3=false; 
      } 
      else 
      { 
       img1.setAlpha(100); 
       img2.setAlpha(100); 
       img3.setAlpha(255); 
       click3=true; 
      } 

     } 

    }); 

    img1.setOnClickListener(new OnClickListener() 
    { 

    @Override 
    public void onClick(View v) 
    { 

     if (click1) 
     { 
      img1.setAlpha(255); 
      img2.setAlpha(100); 
      img3.setAlpha(100); 
      click1=false; 
     } 
     else 
     { 
      img1.setAlpha(255); 
      img2.setAlpha(100); 
      img3.setAlpha(100); 
      click2=true; 
     } 


     contentImage.setImageResource(R.drawable.img1); 

    } 
}); 

    img2.setOnClickListener(new OnClickListener() 
    { 

    @Override 
    public void onClick(View v) 
    { 
     if (click2) 
     { 
      img1.setAlpha(100); 
      img2.setAlpha(255); 
      img3.setAlpha(100); 
      click2=false; 
     } 
     else 
     { 
      img1.setAlpha(80); 
      img2.setAlpha(255); 
      img3.setAlpha(80); 
      click2=true; 
     } 
     contentImage.setImageResource(R.drawable.img2); 

    } 
}); 
    img3.setOnClickListener(new OnClickListener() 
    { 

    @Override 
    public void onClick(View v) 
    { 
     if (click3) 
     { 
      img1.setAlpha(100); 
      img2.setAlpha(100); 
      img3.setAlpha(255); 
      click3=false; 
     } 
     else 
     { 
      img1.setAlpha(100); 
      img2.setAlpha(100); 
      img3.setAlpha(255); 
      click3=true; 
     } 
     contentImage.setImageResource(R.drawable.img3); 

    } 
});  

    contentImage.setOnTouchListener(new View.OnTouchListener() 
    { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) 
    { 

      ImageView view=(ImageView)v; 
      System.out.println("matrix="+savedMatrix.toString()); 
      switch (event.getAction() & MotionEvent.ACTION_MASK) 
      { 
      case MotionEvent.ACTION_DOWN: 

       savedMatrix.set(matrix); 
       start.set(event.getX(), event.getY()); 
       mode = DRAG; 
       break; 


      case MotionEvent.ACTION_POINTER_DOWN: 

       oldDist = spacing(event); 

       if (oldDist > 10f) 
       { 
        savedMatrix.set(matrix); 
        midPoint(mid, event); 
        mode = ZOOM; 
       } 
       break; 

      case MotionEvent.ACTION_UP: 


      case MotionEvent.ACTION_POINTER_UP: 
       mode = NONE; 

       break; 


      case MotionEvent.ACTION_MOVE: 
        if (mode == DRAG) 
        { 
        matrix.set(savedMatrix); 
        matrix.postTranslate(event.getX() - start.x, 
        event.getY() - start.y); 
        } 
        else if (mode == ZOOM) 
        { 
         float newDist = spacing(event); 
         if (newDist > 10f) 
         { 
          matrix.set(savedMatrix); 
          float scale = newDist/oldDist; 
          matrix.postScale(scale, scale, mid.x, mid.y); 
         } 
        } 
        break; 

      } 
      view.setImageMatrix(matrix); 


     return true; 
    } 
    private float spacing(MotionEvent event) 
    { 
      float x = event.getX(0) - event.getX(1); 
      float y = event.getY(0) - event.getY(1); 
      return FloatMath.sqrt(x * x + y * y); 
    } 

    private void midPoint(PointF point, MotionEvent event) 
    { 
      float x = event.getX(0) + event.getX(1); 
      float y = event.getY(0) + event.getY(1); 
      point.set(x/2, y/2); 
     } 
}); 

}//onCreate Method over..... 


} 
+0

+1 Cela m'aide beaucoup. –

+0

mDetector = new GestureDetector (Image.this, nouveau MyGestureDetector (Image.this)); cette erreur d'affichage de ligne, dois-je faire classe pour MyGestureDetector? –

0

Lorsque vous touchez ou cliquez sur l'image il commence le zoom, ce type d'animation zoom peut être utilisé dans la galerie de photos. Pour agrandir l'image dans le fichier de mise en page XML, deux composants ImageView sont utilisés; un pour la vignette et un autre pour la grande image. La grande image est pour la taille en plein écran et la petite image est pour la taille des vignettes. here