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{@Overridepublic 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<TextView>{/** 最小字体 */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 <V> */public abstract class ZoomView<V extends View>{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(){@Overridepublic 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

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/text_view"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:textSize="20sp" /></LinearLayout>


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

更多相关文章

  1. Android(安卓)双击和手势的图片缩放
  2. Android(安卓)WebView
  3. android 动画2
  4. ImageView
  5. Android通过手势实现的缩放处理
  6. Android图片按比例缩放
  7. Android(安卓)代码实现的动画
  8. android imageUtil
  9. Android(安卓)图片拖动和缩放

随机推荐

  1. Android(安卓)SQLite数据库增删改查操作
  2. 《Android面试宝典》学习笔记(第二章:布局)
  3. android:paddingLeft 和 layout_marginLe
  4. RelativeLayout相对布局实验
  5. Android 4.2启动代码分析(一)
  6. Android深入四大组件(一)应用程序启动过程
  7. android 相对定位布局方向 RelativeLayou
  8. android photoview 图片放大缩放功能 Ima
  9. Android(安卓)Service服务的相关介绍
  10. android所有控件