2015-02-13 2 views
0

У меня есть этот код для поворота/увеличения и перемещения изображения, теперь мне нужно применить эти функции для текстового просмотра, но я не был успешным в этой миссии, может ли кто-нибудь помочь мне сделать что йота редактирует этот код или другой код? спасибоКак увеличить/переместить textview ontouch

public class MainActivity extends Activity implements OnTouchListener { 
private EditText ed_text; 
private ImageView view; 
private LinearLayout toolbar_lay; 
private FrameLayout frame1; 
private Matrix mMatrix = new Matrix(); 
private float mScaleFactor = .4f; 
private float mRotationDegrees = 0.f; 
private float mFocusX = 0.f; 
private float mFocusY = 0.f; 
private int mAlpha = 255; 
private int mImageHeight, mImageWidth; 
private ImageView background; 
private ScaleGestureDetector mScaleDetector; 
private RotateGestureDetector mRotateDetector; 
private MoveGestureDetector mMoveDetector; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.frame3); 
    background=(ImageView) findViewById(R.id.frame_back); 
     Display display = getWindowManager().getDefaultDisplay(); 
    mFocusX = display.getWidth()/2f; 
    mFocusY = display.getHeight()/2f; 

    // Set this class as touchListener to the ImageView 
    view = (ImageView) findViewById(R.id.id1); 
    Intent intent=getIntent(); 
    String path=intent.getStringExtra("mybm"); 
    Bitmap bm=BitmapFactory.decodeFile(path); 
    view.setImageBitmap(bm); 
    view.setOnTouchListener(this); 
    // Determine dimensions of 'earth' image 
    Drawable d  = this.getResources().getDrawable(R.drawable.icon3); 
    mImageHeight = d.getIntrinsicHeight(); 
    mImageWidth  = d.getIntrinsicWidth(); 


    float scaledImageCenterX = (mImageWidth*mScaleFactor)/2; 
    float scaledImageCenterY = (mImageHeight*mScaleFactor)/2; 

    mMatrix.postScale(mScaleFactor, mScaleFactor); 
    mMatrix.postTranslate(mFocusX - scaledImageCenterX, 
    mFocusY - scaledImageCenterY); 
    view.setImageMatrix(mMatrix); 

    // Setup Gesture Detectors 
    mScaleDetector = new ScaleGestureDetector(getApplicationContext(), 
    new ScaleListener()); 
    mRotateDetector = new RotateGestureDetector(getApplicationContext(), 
    new RotateListener()); 
    mMoveDetector = new MoveGestureDetector(getApplicationContext(), 
    new MoveListener()); 
    //mShoveDetector = 
    new ShoveGestureDetector(getApplicationContext(),  
    new ShoveListener()); 

} 

@SuppressWarnings("deprecation") 
public boolean onTouch(View v, MotionEvent event) { 
    mScaleDetector.onTouchEvent(event); 
    mRotateDetector.onTouchEvent(event); 
    mMoveDetector.onTouchEvent(event); 
    // mShoveDetector.onTouchEvent(event); 

    float scaledImageCenterX = (mImageWidth*mScaleFactor)/2; 
    float scaledImageCenterY = (mImageHeight*mScaleFactor)/2; 

    mMatrix.reset(); 
    mMatrix.postScale(mScaleFactor, mScaleFactor); 
    mMatrix.postRotate(mRotationDegrees, 
    scaledImageCenterX, scaledImageCenterY); 
    mMatrix.postTranslate(mFocusX - scaledImageCenterX, 
     mFocusY - scaledImageCenterY); 

    ImageView view = (ImageView) v; 
    view.setImageMatrix(mMatrix); 
    view.setAlpha(mAlpha); 

    return true; // indicate event was handled 
    } 

private class ScaleListener 
    extends  ScaleGestureDetector.SimpleOnScaleGestureListener { 
     @Override 
    public boolean onScale(ScaleGestureDetector detector) { 
     mScaleFactor *= detector.getScaleFactor(); 

     mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 10.0f)); 

     return true; 
    } 
} 

private class RotateListener 
    extends  RotateGestureDetector.SimpleOnRotateGestureListener 
    { 
    @Override 
    public boolean onRotate(RotateGestureDetector detector) { 
     mRotationDegrees -= detector.getRotationDegreesDelta(); 
     return true; 
    } 
} 

private class MoveListener 
extends MoveGestureDetector.SimpleOnMoveGestureListener { 
    @Override 
    public boolean onMove(MoveGestureDetector detector) { 
     PointF d = detector.getFocusDelta(); 
     mFocusX += d.x; 
     mFocusY += d.y;  

     // mFocusX = detector.getFocusX(); 
     // mFocusY = detector.getFocusY(); 
     return true; 
    } 
}  


} 
+0

примечание: я также попытался преобразовать текстовое изображение в изображение через textview.enabledrawingcatch (true), но повторное растровое изображение было пустым – user3648435

ответ

0

Я думаю, что вы имеете правильное представление происходит с обработкой текста в качестве ImageView. Но отмените преобразование из TextView. Вместо этого обработайте текстовое изображение все вместе как ImageView. Создайте пустой холст и краску, используйте Canvas.drawText, чтобы нарисовать текст в соответствующем месте в растровом изображении Canvas, а затем используйте код обработки изображений выше, чтобы развернуть/сжать/повернуть текст.

Смежные вопросы