android 缩放字体,android 两点缩放字体

android 两点缩放字体

MultiTouchTestActivity

package src.youer.text;

import java.io.InputStream;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

public class MultiTouchTestActivity extends Activity

{

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

TextView textView = (TextView) this.findViewById(R.id.text_view);

try

{

textView.setText(readText());

}

catch (Exception e)

{

e.printStackTrace();

}

float zoomScale = 0.5f;// 缩放比例

new ZoomTextView(textView, zoomScale);

}

/**

* 读取txt

*

* @param str

* @return

* @throws Exception

*/

public String readText() throws Exception

{

InputStream is = this.getClass()

.getResourceAsStream("/assets/text.txt");

int index = is.available();

byte data[] = new byte[index];

is.read(data);

return new String(data, "UTF-8");

}

}

ZoomTextView

package src.youer.text;

import android.widget.TextView;

public class ZoomTextView extends ZoomView

{

/** 最小字体 */

public static final float MIN_TEXT_SIZE = 10f;

/** 最大子图 */

public static final float MAX_TEXT_SIZE = 100.0f;

/** 缩放比例 */

float scale;

/** 设置字体大小 */

float textSize;

public ZoomTextView(TextView view, float scale)

{

super(view);

this.scale = scale;

textSize = view.getTextSize();

}

/**

* 放大

*/

protected void zoomOut()

{

textSize += scale;

if (textSize > MAX_TEXT_SIZE)

{

textSize = MAX_TEXT_SIZE;

}

view.setTextSize(textSize);

}

/**

* 缩小

*/

protected void zoomIn()

{

textSize -= scale;

if (textSize < MIN_TEXT_SIZE)

{

textSize = MIN_TEXT_SIZE;

}

view.setTextSize(textSize);

}

}

ZoomView

package src.youer.text;

import android.util.FloatMath;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

/**

* view缩放

*

* @author Administrator

*

* @param

*/

public abstract class ZoomView

{

protected V view;

// -----------------------------------------------

private static final int NONE = 0;// 空

private static final int DRAG = 1;// 按下第一个点

private static final int ZOOM = 2;// 按下第二个点

/** 屏幕上点的数量 */

private int mode = NONE;

/** 记录按下第二个点距第一个点的距离 */

float oldDist;

public ZoomView(V view)

{

this.view = view;

setTouchListener();

}

private void setTouchListener()

{

view.setOnTouchListener(new OnTouchListener()

{

@Override

public boolean onTouch(View v, MotionEvent event)

{

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

{

case MotionEvent.ACTION_DOWN:

mode = DRAG;

break;

case MotionEvent.ACTION_UP:

case MotionEvent.ACTION_POINTER_UP:

mode = NONE;

break;

case MotionEvent.ACTION_POINTER_DOWN:

oldDist = spacing(event);

if (oldDist > 10f)

{

mode = ZOOM;

}

break;

case MotionEvent.ACTION_MOVE:

if (mode == ZOOM)

{

// 正在移动的点距初始点的距离

float newDist = spacing(event);

if (newDist > oldDist)

{

zoomOut();

}

if (newDist < oldDist)

{

zoomIn();

}

}

break;

}

return true;

}

/**

* 求出2个触点间的 距离

*

* @param event

* @return

*/

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

}

});

}

protected abstract void zoomIn();

protected abstract void zoomOut();

}

main.xml

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:id="@+id/text_view"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="20sp" />

assets目录下 text.txt内容 可以自行修改

手势缩放文本DEMO(QQ:5267621)

[00:01.00]动力火车 - 你是我的眼

[00:05.00]作词:萧煌奇 作曲:萧煌奇

[00:09.00]

[00:10.00]

[00:14.47]

[00:15.47]如果我能看得见

[00:18.04]就能轻易的分辨白天黑夜

[00:22.85]就能准确的在人群中

[00:26.87]牵住你的手

[00:29.98]

[00:30.91]如果我能看得见

[00:33.70]就能驾车带你到处遨游

[00:38.67]就能惊喜的从背后

[00:41.76]给你一个拥抱

[00:44.99]

[00:45.86]如果我能看得见

[00:49.23]生命也许完全不同

[00:54.30]可能我想要的我喜欢的我爱的

[00:57.97]都不一样

[00:59.88]

[01:05.71]眼前的黑不是黑

[01:09.80]你说的白是什么白

[01:13.86]人们说的天空蓝

[01:17.47]是我记忆中那团白云背后的蓝天

[01:23.68]

[01:25.58]我望向你的脸

[01:28.70]却只能看见一片虚无

[01:32.76]是不是上帝在我眼前遮住了帘

[01:36.54]忘了掀开

[01:40.55]

[01:40.75]你是我的眼 带我领略四季的变换

[01:49.05]你是我的眼 带我穿越拥挤的人潮

[01:56.86]你是我的眼 带我阅读浩瀚的书海

[02:04.39]因为你是我的眼 让我看见

[02:10.70]这世界就在我眼前

[02:16.77]

[02:17.77]

[02:42.19]

[02:43.19]眼前的黑不是黑

[02:47.22]你说的白是什么白

[02:51.35]人们说的天空蓝

[02:55.15]是我记忆中那团白云背后的蓝天

[03:01.43]

[03:03.14]我望向你的脸

[03:06.41]却只能看见一片虚无

[03:10.74]是不是上帝在我眼前遮住了帘

[03:14.24]忘了掀开

[03:18.66]

[03:22.43]你是我的眼 带我领略四季的变换

[03:30.02]你是我的眼 带我穿越拥挤的人潮

[03:37.78]你是我的眼 带我阅读浩瀚的书海

[03:45.49]因为你是我的眼 让我看见

[03:51.86]这世界就在我眼前

[03:57.39]

[04:01.00]你是我的眼 带我领略四季的变换

[04:08.63]你是我的眼 带我穿越拥挤的人潮

[04:16.62]你是我的眼 带我阅读浩瀚的书海

[04:24.02]因为你是我的眼 让我看见

[04:30.34]这世界就在我眼前

DEMO下载地址:http://download.csdn.net/detail/tt5267621/3735545

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值