2012-11-20 24 views
0

我能夠在單個圖像查看器上實現拖動和縮放,從here這裏也是代碼;在單個Activtiy上移動和縮放多個圖像查看器

public class Touch extends Activity { 
private static final String TAG = "Touch"; 
Matrix matrix = new Matrix(); 
Matrix savedMatrix = new Matrix(); 
private PointF start = new PointF(); 
private PointF mid = new PointF(); 
private float oldDist = 1f; 

// We can be in one of these 3 states 
static final int NONE = 0; 
static final int DRAG = 1; 
static final int ZOOM = 2; 
int mode = NONE; 

ImageView tv1; 
LayoutParams layoutParams1; 
ImageView tv2; 
LayoutParams layoutParams2; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    final int windowwidth = getWindowManager().getDefaultDisplay() 
      .getWidth(); 
    final int windowheight = getWindowManager().getDefaultDisplay() 
      .getHeight(); 

    tv1 = (ImageView) findViewById(R.id.imageView); 
    tv1.setOnTouchListener(new View.OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 

      layoutParams1 = (RelativeLayout.LayoutParams) tv1 
        .getLayoutParams(); 
      switch (event.getActionMasked()) { 
      case MotionEvent.ACTION_DOWN: 
       break; 
      case MotionEvent.ACTION_MOVE: 
       int x_cord = (int) event.getRawX(); 
       int y_cord = (int) event.getRawY(); 
       if (x_cord > windowwidth) { 
        x_cord = windowwidth; 
       } 
       if (y_cord > windowheight) { 
        y_cord = windowheight; 
       } 
       layoutParams1.leftMargin = x_cord - 25; 
       layoutParams1.topMargin = y_cord - 75; 
       tv1.setLayoutParams(layoutParams1); 
       break; 
      default: 
       break; 
      } 
      return true; 
     } 
    }); 

    tv2 = (ImageView) findViewById(R.id.imageView2); 
    tv2.setOnTouchListener(new View.OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 

      layoutParams2 = (RelativeLayout.LayoutParams) tv2 
        .getLayoutParams(); 
      switch (event.getActionMasked()) { 
      case MotionEvent.ACTION_DOWN: 
       break; 
      case MotionEvent.ACTION_MOVE: 
       int x_cord = (int) event.getRawX(); 
       int y_cord = (int) event.getRawY(); 
       if (x_cord > windowwidth) { 
        x_cord = windowwidth; 
       } 
       if (y_cord > windowheight) { 
        y_cord = windowheight; 
       } 
       layoutParams2.leftMargin = x_cord - 25; 
       layoutParams2.topMargin = y_cord - 75; 
       tv2.setLayoutParams(layoutParams2); 
       break; 
      default: 
       break; 
      } 
      return true; 

     } 
    }); 
} 
    } 

這是XML:

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

<ImageView 
    android:id="@+id/imageView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scaleType="matrix" 
    android:src="@drawable/ic_launcher" /> 

    </LinearLayout> 

現在我的問題是,我想每個ImageView的動態添加多個imageViews和應用拖動,縮放。任何人都可以幫我實現這個目標我見過很多其他的方式,但都有一些限制。

+0

不要把標籤主體 –

回答

0

from this例如,您可以拖動圖像作爲圖庫視圖並可以進行縮放。在這個例子中你有一個適配器類..所以你可以動態地綁定圖像。

這種方式綁定...

for(int i=0;i<bmpList.size();i++) 
      { 
       ImageViewTouch imageView = new ImageViewTouch(Philately_image_view.this); 
       imageView.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
       Options options = new Options(); 
       options.inSampleSize = 2; 
       //Bitmap bitmap = BitmapFactory.decodeFile(file.getPath(), options); 
       imageView.setImageBitmap(bmpList.get(i)); 
       arrayAdapter.add(imageView); 


      } 

      galleryTouch.setAdapter(arrayAdapter); 

這裏我有位圖的數組列表......和GalleryTouch galleryTouch對象..

+0

這個例子加載從廚房隨機圖像,但我無法移動或放大該圖像 – Tahreem

+0

https://github.com/kilaka/ImageViewZoom/blob/master/ImageViewTouchTest/src/it/sephiroth/android/library/imagezoom/test/GalleryTouchTestActivity.java ...查看這galeryTousttest.java ...並從您的陣列中加載圖像..所以你做了輕微的變化那裏 –

+0

這個類提取從圖庫的圖像,並把圖像ArrayAdapter圖庫小部件..我需要動態地添加圖像視圖的縮放,單獨移動這些圖像..通常發生在圖像拼貼應用程序 – Tahreem