缩放字体,android 两点缩放字体"/>
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下载地址:
更多推荐
android 缩放字体,android 两点缩放字体
发布评论