使用手势缩放文本
来源:互联网 发布:mysql 导出存储过程 编辑:程序博客网 时间:2024/06/05 08:08
思路:为呈现文本的组件注册setOnTouchListener监听,然后判断缩放来改变字体大小。
MainActivity:
package com.home.mutitouch;import java.io.InputStream;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);TextView textView = (TextView) this.findViewById(R.id.main_tv);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 com.home.mutitouch;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 = 80.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 com.home.mutitouch;import android.util.FloatMath;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;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();}
0 0
- 使用手势缩放文本
- UIWebView的一些使用技巧(手势缩放字体、先加载文本再load图片、实现@变色的UITextView等)
- 手势缩放
- 使用手势对UIImageView进行缩放、…
- 187,使用手势控制图片的缩放
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- iOS手势识别的详细使用拖动,缩放,旋转,点击,手势依赖,自定义手势
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- HtmlAgilityPack中通过sibling才能得到对应的InnerText和form,option等tag的子节点
- iOS 删除文件夹下所有文件的方式
- linux防火墙最好这么写
- 最优化方法--概述
- 20110921 onItemClick监听器四个arg参数
- 使用手势缩放文本
- 在线调用QQ
- 路由经典解释
- 사람의 生生 (韓長庚 易學原理總論)
- 串口(RS232,RS485,RS482)的流控制
- Web页面打印之 javascript:window.print()
- jQuery 定位到页面具体位置
- [ TED ] 一个简单的thttpd应用
- C++学习建议