使用装饰者模式,讲一个普通的TextView 包装成一个可放大缩小的View
关于多点触控还是要进一步学习啊。。。
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() { @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(); }
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); } }
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) { // TODO Auto-generated catch block 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"); } }
相关推荐
读取本地文本 通过滑屏改变字体的大小 很好用 适合放大字体类似项目参考
Android 取txt,view缩放,使用手势多点缩放屏幕文字,求出2个触点间的 距离。类似于华为手机短信界面... 在这个Android小实例中,定义有读取txt的函数、设置字体大小和放大缩小文字的函数,另外还有view缩放的实现。
PinchZoomTextView库该库允许您使用一个TextView,它将使用用户的手势来增大/缩小字体大小。用法要访问该库,请将依赖项添加到build.gradle中:compile ' com.androidessence:pinchzoomtextview:1.0.1 '开发者须知...
支持放大缩小的 TextView .zip,一种文本视图库,允许用户通过两个手指的手势来增加/减少字体大小。
安卓源码包android多点触控&手势操作灯DEMO源码: 一个最最基础的图形程序,圆可以拖动,两点触控是...多点触控控制字体大小,源码中有详细注释,简单Demo 通过手势实现的缩放处理 通过手势对图片进行任意放大绽放旋转
软件大小:10.29 M 开发者:Blinqdroid 应用简介 势和启动器完美结合,支持以下特性: ●抽屉文件夹 ●文件夹背景 ●改变文字颜色 ●设置的图标、缩放 ●各种字体样式可供选择 ●大量抽屉过渡效果 ●自定义网格...
Pixie Image Editor 在线图片编辑器 中文版 ...缩放和平移 - 可以使用鼠标,鼠标滚轮或移动设备上的触摸和捏合手势来缩放和平移画布。 HTML5 - Pixie使用原生HTML5,这意味着它可以在每个设备上运行。
+设置最小字体大小如果您有任何反馈意见,请通过以下链接向我发送消息:https://chrome.google.com/webstore/support/kdfgigbjonaniokmpfflpflkhahhbaej或通过hardwarebeta@gmail.com与我联系现在享受它:) ...
10比例字体演示项目显示了如何使用交互方式调用显示字体,例如触摸板上的放大/缩小(两根手指)手势,或者控制键和鼠标滚轮可放大或缩小文本大小。14比例字体演示项目实现了项目,并从项目添加了自定义缩放控件。 ...
地图操作:提供平移、缩放、双指手势操作、底图旋转等地图相关操作。 自定义绘制:提供自定义绘制点、线、面基本几何图形的功能。 地图搜索:提供根据关键字进行范围检索、城市检索和周边检索。且支持LBS云检索用户...
使用捏缩放和旋转的手势 创建照片拼贴,多张照片混合在一起。 添加字幕和图释时,直接拍照 负载从你的相机胶卷 从网络上下载美丽的图像。 每分钟就有一个新的趋势图像从网页 保存或分享您的照片通过SMS,EMAIL,...
★缩放到任意大小的多个页面在屏幕上,巨大的。 ★幻灯片放映演示文稿。 ★剪切和粘贴的特殊剪贴簿和系统剪贴板的选择。 ★轻松地撤消错误。 ★回流,以适应屏幕或使用全页面布局的页面。 ★平板电脑的用户界面,...
设置大小、缩放和方向 高级打印技术 打印示例:多页面打印 打印示例:缩放、裁剪和响应 打印示例:页面设置和打印选项 第章:Geolocation 检测geolocation更改 第章:应用程序国际化 应用程序国际化基础知识 ...
|--手势识别器GestureDetector的用法 |--拍照之调用系统相机并显示及保存 |--拨打电话 |--按健之长按menu事件屏蔽 |--按健监听按返回健回桌面 |--搜索之调用系统Searchable的用法 |--数据库CURD通过execSQL与...