如何放大Android的一个TextView? [英] How to zoom a textview in android?

查看:301
本文介绍了如何放大Android的一个TextView?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何人都可以指导我在和放大器进行放大;行操作的Andr​​oid的多个视图?我需要进行放大和放大器;触摸图像,文本视图的行操作。什么应该是我父母的布局?这里是code放大图像上触摸的ImageView的。如何放大一个TextView?请帮我。

  //这些矩阵将被用来缩放图像的点
字模=新的Matrix();
矩阵savedMatrix =新的Matrix();

// 3状态(事件),用户试图执行
静态最终诠释无= 0;
静态最终诠释DRAG = 1;
静态最终诠释ZOOM = 2;
INT模式=无;

//这些的PointF对象用于记录点(多个)用户正在触摸
的PointF开始=新的PointF();
的PointF中期=新的PointF();
浮oldDist = 1F;

私人无效变焦(视图V,MotionEvent事件)
{
    ImageView的观点=(ImageView的)V;
    view.setScaleType(ImageView.ScaleType.MATRIX);
    浮规模;

    // dumpEvent(事件);
    //这里处理触摸事件...

    开关(event.getAction()及MotionEvent.ACTION_MASK)
    {
    案例MotionEvent.ACTION_DOWN:
        //第一指仅下跌
        savedMatrix.set(矩阵);
        start.set(event.getX(),event.getY());

        模式=阻力;
        打破;

    案例MotionEvent.ACTION_UP://第一手指抬起

    案例MotionEvent.ACTION_POINTER_UP://第二根手指抬起

        模式=无;

        打破;

    案例MotionEvent.ACTION_POINTER_DOWN://第一和第二指下跌

        oldDist =间距(事件);

        如果(oldDist> 5F)
        {
            savedMatrix.set(矩阵);
            中点(中,事件);
            模式=变焦;

        }
        打破;

    案例MotionEvent.ACTION_MOVE:

        如果(模式==拖动)
        {
            matrix.set(savedMatrix);
            matrix.postTranslate(event.getX() -  start.x,event.getY() -  start.y); //创建点的矩阵变换
        }
        否则,如果(模式== ZOOM)
        {
            //捏缩放
            浮newDist =间距(事件);

            如果(newDist> 5F)
            {
                matrix.set(savedMatrix);
                规模= newDist / oldDist; //设置的比例
                //矩阵...如果规模> 1手段
                //放大......如果规模< 1手段
                // 缩小
                matrix.postScale(规模化,规模化,mid.x,mid.y);
            }
        }
        打破;
    }

    view.setImageMatrix(矩阵); //显示在屏幕上的转变

}

/ *
 * ------------------------------------------------- -------------------------
 *方法:间距参数:MotionEvent返回:浮动说明:
 *
 *检查两个手指在触摸之间的间距
 * ------------------------------------------------- ---
 * /

私人浮动间距(MotionEvent事件)
{
    浮X = event.getX(0) -  event.getX(1);
    浮Y = event.getY(0) -  event.getY(1);
    返回FloatMath.sqrt(X * X + Y * Y);
}

/ *
 * ------------------------------------------------- -------------------------
 *方法:中点参数:的PointF对象,MotionEvent返回:Void
 *说明:计算两个手指之间的中点
 * ------------------------------------------------- -----------
 * /

私人无效中点(的PointF点,MotionEvent事件)
{
    浮X = event.getX(0)+ event.getX(1);
    浮Y = event.getY(0)+ event.getY(1);
    point.set(X / 2,Y / 2);
}
 

解决方案

要放大的TextView,你可以使用相同的code,你要放大的图像。但是,你应该的TextView更改为ImageView的,然后进行变焦操作。下面是转换的TextView到的ImageView <一个链接href="http://stackoverflow.com/questions/4167593/converting-a-textview-bitmap-imageview-and-nothings-showing-up">Converting一个TextView-&GT; Bitmap-&GT; ImageView的,而什么也没有显示出来

Can anyone guide me to perform zoom in&out operations on multiple views in android ? I need to perform zoom in&out operations on touch of image, text views . What should be my parent layout? Here is the code to zoom an image on touch of imageview. How do i zoom a textview? Please help me.

   // These matrices will be used to scale points of the image
Matrix matrix = new Matrix();
Matrix savedMatrix = new Matrix();

// The 3 states (events) which the user is trying to perform   
static final int NONE = 0;
static final int DRAG = 1;
static final int ZOOM = 2;
int mode = NONE;

// these PointF objects are used to record the point(s) the user is touching
PointF start = new PointF();
PointF mid = new PointF();
float oldDist = 1f;

private void zoom(View v, MotionEvent event) 
{
    ImageView view = (ImageView) v;
    view.setScaleType(ImageView.ScaleType.MATRIX);
    float scale;

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

        mode = DRAG;
        break;

    case MotionEvent.ACTION_UP: // first finger lifted

    case MotionEvent.ACTION_POINTER_UP: // second finger lifted

        mode = NONE;   

        break;

    case MotionEvent.ACTION_POINTER_DOWN: // first and second finger down

        oldDist = spacing(event);

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

        }
        break;

    case MotionEvent.ACTION_MOVE:

        if (mode == DRAG) 
        { 
            matrix.set(savedMatrix);
            matrix.postTranslate(event.getX() - start.x, event.getY() - start.y); // create the transformation in the matrix  of points
        } 
        else if (mode == ZOOM) 
        { 
            // pinch zooming
            float newDist = spacing(event);

            if (newDist > 5f) 
            {
                matrix.set(savedMatrix);
                scale = newDist / oldDist; // setting the scaling of the
                // matrix...if scale > 1 means
                // zoom in...if scale < 1 means
                // zoom out
                matrix.postScale(scale, scale, mid.x, mid.y);
            }
        }
        break;  
    }

    view.setImageMatrix(matrix); // display the transformation on screen

}

/*
 * --------------------------------------------------------------------------
 * Method: spacing Parameters: MotionEvent Returns: float Description:
 * 
 * checks the spacing between the two fingers on touch
 * ----------------------------------------------------
 */

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

/*
 * --------------------------------------------------------------------------
 * Method: midPoint Parameters: PointF object, MotionEvent Returns: void
 * Description: calculates the midpoint between the two fingers
 * ------------------------------------------------------------
 */   

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

解决方案

To zoom textview, you can use the same code which you have to zoom an image. But you should change textview to an imageview and then perform zoom operations. Here is the link to convert textview to imageview Converting a TextView->Bitmap->ImageView, and nothing's showing up

这篇关于如何放大Android的一个TextView?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆