2014-09-03 27 views
0

我想做一個鏈接按鈕到一個ImageView,它的工作,但沒有縮放,在此之前,它只用於通過您的手機運行它時使用縮放當它沒有鏈接按鈕時,我有代碼,這是錯誤的! eclipse中有沒有人有https://play.google.com/store/apps/details?id=uk.co.senab.photoview.sample一個按鈕鏈接到一個ImageView與縮放

編輯:

mapslocations.xml

<Button 
      android:id="@+id/pslook1" 
      android:layout_width="fill_parent" 
      android:layout_height="45dp" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="Map" 
      android:textSize="10sp" 
      android:textStyle="italic" /> 

Sites.java

package com.f.fa; 

import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.graphics.Matrix; 
import android.graphics.PointF; 
import android.os.Bundle; 
import android.util.FloatMath; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.ImageView; 

public class Sites extends Activity { 
ImageView imageDetail1; 
Matrix matrix = new Matrix(); 
Matrix savedMatrix = new Matrix(); 
PointF startPoint = new PointF(); 
PointF midPoint = new PointF(); 
float oldDist = 1f; 
static final int NONE = 0; 
static final int DRAG = 1; 
static final int ZOOM = 2; 
int mode = NONE; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mapslocations); 
    imageDetail1 = (ImageView) findViewById(R.id.pslook1); 
    /** 
    * set on touch listner on image 
    */ 
    imageDetail1.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); 
    startPoint.set(event.getX(), event.getY()); 
    mode = DRAG; 
    break; 

    case MotionEvent.ACTION_POINTER_DOWN: 

    oldDist = spacing(event); 

    if (oldDist > 10f) { 
     savedMatrix.set(matrix); 
     midPoint(midPoint, 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() - startPoint.x, 
     event.getY() - startPoint.y); 
    } else if (mode == ZOOM) { 
     float newDist = spacing(event); 
     if (newDist > 10f) { 
     matrix.set(savedMatrix); 
     float scale = newDist/oldDist; 
     matrix.postScale(scale, scale, midPoint.x, midPoint.y); 
     } 
    } 
    break; 

    } 
    view.setImageMatrix(matrix); 

    return true; 
    } 

    @SuppressLint("FloatMath") 
    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); 
    } 
    }); 
} 
} 

imageview1.xml

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

PagePowerstation.java

package com.f.fa; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 

public class PagePowerstation extends Activity { 

    Button imageview1; 

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

回答

0

我覺得你是在使用Here的代碼。爲什麼不使用代碼來更改佈局,而不是使用sites.java中的所有瘋狂內容。它有官方文件here。請仔細閱讀本文檔中的所有內容,如果問題仍然存在,請告訴我,以便我編輯此代碼以更改動畫布局。

+0

這兩個不幫:)其中一個是「Android Studio」 – Sako 2014-09-03 15:37:07

+0

第一個,有沒有在eclipse上運行它? – Sako 2014-09-03 15:38:38

+0

我會在接下來的幾分鐘內爲您提供代碼。 – Aditya 2014-09-03 15:39:11

相關問題