android 两点缩放字体
android 两点缩放字体
MultiTouchTestActivity
[java] view plain copy print ?
- packagesrc.youer.text;
- importjava.io.InputStream;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.widget.TextView;
- publicclassMultiTouchTestActivityextendsActivity
- {
- @Override
- publicvoidonCreate(BundlesavedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- TextViewtextView=(TextView)this.findViewById(R.id.text_view);
- try
- {
- textView.setText(readText());
- }
- catch(Exceptione)
- {
- e.printStackTrace();
- }
- floatzoomScale=0.5f;//缩放比例
- newZoomTextView(textView,zoomScale);
- }
- /**
- *读取txt
- *
- *@paramstr
- *@return
- *@throwsException
- */
- publicStringreadText()throwsException
- {
- InputStreamis=this.getClass()
- .getResourceAsStream("/assets/text.txt");
- intindex=is.available();
- bytedata[]=newbyte[index];
- is.read(data);
- returnnewString(data,"UTF-8");
- }
- }
ZoomTextView
[java] view plain copy print ?- packagesrc.youer.text;
- importandroid.widget.TextView;
- publicclassZoomTextViewextendsZoomView<TextView>
- {
- /**最小字体*/
- publicstaticfinalfloatMIN_TEXT_SIZE=10f;
- /**最大子图*/
- publicstaticfinalfloatMAX_TEXT_SIZE=100.0f;
- /**缩放比例*/
- floatscale;
- /**设置字体大小*/
- floattextSize;
- publicZoomTextView(TextViewview,floatscale)
- {
- super(view);
- this.scale=scale;
- textSize=view.getTextSize();
- }
- /**
- *放大
- */
- protectedvoidzoomOut()
- {
- textSize+=scale;
- if(textSize>MAX_TEXT_SIZE)
- {
- textSize=MAX_TEXT_SIZE;
- }
- view.setTextSize(textSize);
- }
- /**
- *缩小
- */
- protectedvoidzoomIn()
- {
- textSize-=scale;
- if(textSize<MIN_TEXT_SIZE)
- {
- textSize=MIN_TEXT_SIZE;
- }
- view.setTextSize(textSize);
- }
- }
ZoomView
[java] view plain copy print ?- packagesrc.youer.text;
- importandroid.util.FloatMath;
- importandroid.view.MotionEvent;
- importandroid.view.View;
- importandroid.view.View.OnTouchListener;
- /**
- *view缩放
- *
- *@authorAdministrator
- *
- *@param<V>
- */
- publicabstractclassZoomView<VextendsView>
- {
- protectedVview;
- //-----------------------------------------------
- privatestaticfinalintNONE=0;//空
- privatestaticfinalintDRAG=1;//按下第一个点
- privatestaticfinalintZOOM=2;//按下第二个点
- /**屏幕上点的数量*/
- privateintmode=NONE;
- /**记录按下第二个点距第一个点的距离*/
- floatoldDist;
- publicZoomView(Vview)
- {
- this.view=view;
- setTouchListener();
- }
- privatevoidsetTouchListener()
- {
- view.setOnTouchListener(newOnTouchListener()
- {
- @Override
- publicbooleanonTouch(Viewv,MotionEventevent)
- {
- switch(event.getAction()&MotionEvent.ACTION_MASK)
- {
- caseMotionEvent.ACTION_DOWN:
- mode=DRAG;
- break;
- caseMotionEvent.ACTION_UP:
- caseMotionEvent.ACTION_POINTER_UP:
- mode=NONE;
- break;
- caseMotionEvent.ACTION_POINTER_DOWN:
- oldDist=spacing(event);
- if(oldDist>10f)
- {
- mode=ZOOM;
- }
- break;
- caseMotionEvent.ACTION_MOVE:
- if(mode==ZOOM)
- {
- //正在移动的点距初始点的距离
- floatnewDist=spacing(event);
- if(newDist>oldDist)
- {
- zoomOut();
- }
- if(newDist<oldDist)
- {
- zoomIn();
- }
- }
- break;
- }
- returntrue;
- }
- /**
- *求出2个触点间的距离
- *
- *@paramevent
- *@return
- */
- privatefloatspacing(MotionEventevent)
- {
- floatx=event.getX(0)-event.getX(1);
- floaty=event.getY(0)-event.getY(1);
- returnFloatMath.sqrt(x*x+y*y);
- }
- });
- }
- protectedabstractvoidzoomIn();
- protectedabstractvoidzoomOut();
- }
main.xml
[html] view plain copy print ?
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns: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
更多相关文章
- android图片等比例缩放 填充屏幕
- Android:漫画APP开发笔记之ListView中图片按屏幕宽度缩放
- android图片缩放手势检测类--ScaleGestureDetector
- Android ImageView 图片等比缩放问题
- Android缩放图片Bitmap、Drawable
- android通过读取系统属性设置字体缩放的默认值
- Android 图片拖动和缩放
- 补间动画--缩放动画XML