2012-03-29 3 views
8

텍스트보기의 축소 기능 (확대/축소)을 수행하려고합니다.텍스트 확대/축소 확대보기

I가 이미 많은 튜토리얼을 참조하지만, 어느 하나를 수행하거나 작업을 수행하는 방법을 알고 있다면 .... 어떤 결실 ..please 도움을 나받지

나는 버튼을 사용하여도 그것을 할 수 확대/축소 및/또는 2 손가락 집게 사용?

어떤 도움을 주시면 감사하겠습니다 .. 덕분에 코드 작동하지

: 당신은 손가락 핀치를 구현하려면

setContentView(R.layout.main); 
    mainView =(LinearLayout)findViewById(R.id.linearLayout); 

    Button buttonZoomOut = (Button)findViewById(R.id.buttonZoomOut); 
    Button buttonNormal = (Button)findViewById(R.id.buttonNormal); 
    Button buttonZoomIn = (Button)findViewById(R.id.buttonZoomIn); 

    buttonZoomOut.setOnClickListener(new View.OnClickListener() {  
    public void onClick(View v) { 
    zoom(0.5f,0.5f,new PointF(0,0));  
    } 
    }); 
    buttonNormal.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
    zoom(1f,1f,new PointF(0,0)); 
    } 
    }); 
    buttonZoomIn.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View v) { 
    zoom(2f,2f,new PointF(0,0)); 
    } 
    }); 
} 

/** zooming is done from here */ 
public void zoom(Float scaleX,Float scaleY,PointF pivot){ 
    mainView.setPivotX(pivot.x); 
    mainView.setPivotY(pivot.y); 
    mainView.setScaleX(scaleX); 
    mainView.setScaleY(scaleY); 
} 
+1

+1 유용한 질문입니다. –

+0

[Android - Pinch zoom] (http://stackoverflow.com/q/9519526/940096) 아마도 이것은 – Praveenkumar

+0

Downvote for duplicate를 도와줍니다. 이것은 * 여러 번 묻습니다. – IneQuation

답변

3

, 당신은 구글 개발자 블로그에 의해 주어진이 sample code을 볼 수 있습니다.

이전에 사용해 보았습니다. 그것은 효과적이며 학습에 좋습니다.

+0

내 대답을 본 적이 있니? – dreamtale

+0

yea-ah 나는 지금 그것을 보았습니다 ... 텍스트보기 또는 이미지보기를 확대/축소하기위한 샘플 코드입니까? – shyam

+0

이미지보기입니다. – dreamtale

0

다음 코드를 시도해보십시오 .... TextView를 이미지로 변환 한 다음 확대/축소 할 수 있습니다.

공용 클래스 온도는 활동 OnTouchListener {

private static final String TAG = "Touch"; 

private static final float MIN_ZOOM = 1.0f; 

private static final float MAX_ZOOM = 5.0f; 

// These matrices will be used to move and zoom image 

Matrix matrix = new Matrix(); 

Matrix savedMatrix = new Matrix(); 

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

// Remember some things for zooming 

PointF start = new PointF(); 

PointF mid = new PointF(); 

float oldDist = 1f; 

// 공공 정적 ArrayList의 str을 구현 확장;

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

TextView tv = new TextView(this); 
    LinearLayout.LayoutParams layoutParamsForText = new LinearLayout.LayoutParams(
      width,height); 
    tv.setLayoutParams(layoutParamsForText); 

    Bitmap testB; 

    testB = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(testB); 
    tv.layout(0, 0, width, height); 
    tv.draw(c); 

    ImageView view = (ImageView) findViewById(R.id.test_X); 
    view.setLayoutParams(layoutParamsForText); 
    view.setBackgroundColor(Color.WHITE); 
    view.setImageBitmap(testB); 
    view.setMaxHeight(height); 
    view.setMaxWidth(width); 
    // ImageView view = (ImageView) findViewById(R.id.test_X); 

    // view.setLayoutParams(new GridView.LayoutParams(85, 85)); 

    view.setScaleType(ImageView.ScaleType.FIT_CENTER); 

    view.setOnTouchListener(this); 
} 

public boolean onTouch(View v, MotionEvent event) { 

    ImageView view = (ImageView) v; 

    view.setScaleType(ImageView.ScaleType.MATRIX); 

    float scale; 

    // Dump touch event to log 

    dumpEvent(event); 

    // Handle touch events here... 

    switch (event.getAction() & MotionEvent.ACTION_MASK) { 

    case MotionEvent.ACTION_DOWN: // first finger down only 

     savedMatrix.set(matrix); 

     start.set(event.getX(), event.getY()); 

     Log.d(TAG, "mode=DRAG"); 

     mode = DRAG; 

     break; 

    case MotionEvent.ACTION_UP: // first finger lifted 

    case MotionEvent.ACTION_POINTER_UP: // second finger lifted 

     mode = NONE; 

     Log.d(TAG, "mode=NONE"); 

     break; 

    case MotionEvent.ACTION_POINTER_DOWN: // second finger down 

     oldDist = spacing(event); 

     Log.d(TAG, "oldDist=" + oldDist); 

     if (oldDist > 5f) { 

      savedMatrix.set(matrix); 

      midPoint(mid, event); 

      mode = ZOOM; 

      Log.d(TAG, "mode=ZOOM"); 

     } 

     break; 

    case MotionEvent.ACTION_MOVE: 

     if (mode == DRAG) { // movement of first finger 

      matrix.set(savedMatrix); 

      if (view.getLeft() >= -392) { 

       matrix.postTranslate(event.getX() - start.x, event.getY() 
         - start.y); 

      } 

     } 

     else if (mode == ZOOM) { // pinch zooming 

      float newDist = spacing(event); 

      Log.d(TAG, "newDist=" + newDist); 

      if (newDist > 5f) { 

       matrix.set(savedMatrix); 

       scale = newDist/oldDist; /* 
              * thinking i need to play 
              * around with this value to 
              * limit it 
              */ 

       matrix.postScale(scale, scale, mid.x, mid.y); 

      } 

     } 

     break; 

    } 

    // Perform the transformation 

    view.setImageMatrix(matrix); 

    return true; // indicate event was handled 

} 

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

} 

/** Show an event in the LogCat view, for debugging */ 

private void dumpEvent(MotionEvent event) { 

    String names[] = { "DOWN", "UP", "MOVE", "CANCEL", "OUTSIDE", 

    "POINTER_DOWN", "POINTER_UP", "7?", "8?", "9?" }; 

    StringBuilder sb = new StringBuilder(); 

    int action = event.getAction(); 

    int actionCode = action & MotionEvent.ACTION_MASK; 

    sb.append("event ACTION_").append(names[actionCode]); 

    if (actionCode == MotionEvent.ACTION_POINTER_DOWN 

    || actionCode == MotionEvent.ACTION_POINTER_UP) { 

     sb.append("(pid ").append(

     action >> MotionEvent.ACTION_POINTER_ID_SHIFT); 

     sb.append(")"); 

    } 

    sb.append("["); 

    for (int i = 0; i < event.getPointerCount(); i++) { 

     sb.append("#").append(i); 

     sb.append("(pid ").append(event.getPointerId(i)); 

     sb.append(")=").append((int) event.getX(i)); 

     sb.append(",").append((int) event.getY(i)); 

     if (i + 1 < event.getPointerCount()) 

      sb.append(";"); 

    } 

    sb.append("]"); 

    Log.d(TAG, sb.toString()); 

}