android 两点缩放字体

MultiTouchTestActivity

[java] view plain copy print ?
  1. packagesrc.youer.text;
  2. importjava.io.InputStream;
  3. importandroid.app.Activity;
  4. importandroid.os.Bundle;
  5. importandroid.widget.TextView;
  6. publicclassMultiTouchTestActivityextendsActivity
  7. {
  8. @Override
  9. publicvoidonCreate(BundlesavedInstanceState)
  10. {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. TextViewtextView=(TextView)this.findViewById(R.id.text_view);
  14. try
  15. {
  16. textView.setText(readText());
  17. }
  18. catch(Exceptione)
  19. {
  20. e.printStackTrace();
  21. }
  22. floatzoomScale=0.5f;//缩放比例
  23. newZoomTextView(textView,zoomScale);
  24. }
  25. /**
  26. *读取txt
  27. *
  28. *@paramstr
  29. *@return
  30. *@throwsException
  31. */
  32. publicStringreadText()throwsException
  33. {
  34. InputStreamis=this.getClass()
  35. .getResourceAsStream("/assets/text.txt");
  36. intindex=is.available();
  37. bytedata[]=newbyte[index];
  38. is.read(data);
  39. returnnewString(data,"UTF-8");
  40. }
  41. }


ZoomTextView

[java] view plain copy print ?
  1. packagesrc.youer.text;
  2. importandroid.widget.TextView;
  3. publicclassZoomTextViewextendsZoomView<TextView>
  4. {
  5. /**最小字体*/
  6. publicstaticfinalfloatMIN_TEXT_SIZE=10f;
  7. /**最大子图*/
  8. publicstaticfinalfloatMAX_TEXT_SIZE=100.0f;
  9. /**缩放比例*/
  10. floatscale;
  11. /**设置字体大小*/
  12. floattextSize;
  13. publicZoomTextView(TextViewview,floatscale)
  14. {
  15. super(view);
  16. this.scale=scale;
  17. textSize=view.getTextSize();
  18. }
  19. /**
  20. *放大
  21. */
  22. protectedvoidzoomOut()
  23. {
  24. textSize+=scale;
  25. if(textSize>MAX_TEXT_SIZE)
  26. {
  27. textSize=MAX_TEXT_SIZE;
  28. }
  29. view.setTextSize(textSize);
  30. }
  31. /**
  32. *缩小
  33. */
  34. protectedvoidzoomIn()
  35. {
  36. textSize-=scale;
  37. if(textSize<MIN_TEXT_SIZE)
  38. {
  39. textSize=MIN_TEXT_SIZE;
  40. }
  41. view.setTextSize(textSize);
  42. }
  43. }


ZoomView

[java] view plain copy print ?
  1. packagesrc.youer.text;
  2. importandroid.util.FloatMath;
  3. importandroid.view.MotionEvent;
  4. importandroid.view.View;
  5. importandroid.view.View.OnTouchListener;
  6. /**
  7. *view缩放
  8. *
  9. *@authorAdministrator
  10. *
  11. *@param<V>
  12. */
  13. publicabstractclassZoomView<VextendsView>
  14. {
  15. protectedVview;
  16. //-----------------------------------------------
  17. privatestaticfinalintNONE=0;//空
  18. privatestaticfinalintDRAG=1;//按下第一个点
  19. privatestaticfinalintZOOM=2;//按下第二个点
  20. /**屏幕上点的数量*/
  21. privateintmode=NONE;
  22. /**记录按下第二个点距第一个点的距离*/
  23. floatoldDist;
  24. publicZoomView(Vview)
  25. {
  26. this.view=view;
  27. setTouchListener();
  28. }
  29. privatevoidsetTouchListener()
  30. {
  31. view.setOnTouchListener(newOnTouchListener()
  32. {
  33. @Override
  34. publicbooleanonTouch(Viewv,MotionEventevent)
  35. {
  36. switch(event.getAction()&MotionEvent.ACTION_MASK)
  37. {
  38. caseMotionEvent.ACTION_DOWN:
  39. mode=DRAG;
  40. break;
  41. caseMotionEvent.ACTION_UP:
  42. caseMotionEvent.ACTION_POINTER_UP:
  43. mode=NONE;
  44. break;
  45. caseMotionEvent.ACTION_POINTER_DOWN:
  46. oldDist=spacing(event);
  47. if(oldDist>10f)
  48. {
  49. mode=ZOOM;
  50. }
  51. break;
  52. caseMotionEvent.ACTION_MOVE:
  53. if(mode==ZOOM)
  54. {
  55. //正在移动的点距初始点的距离
  56. floatnewDist=spacing(event);
  57. if(newDist>oldDist)
  58. {
  59. zoomOut();
  60. }
  61. if(newDist<oldDist)
  62. {
  63. zoomIn();
  64. }
  65. }
  66. break;
  67. }
  68. returntrue;
  69. }
  70. /**
  71. *求出2个触点间的距离
  72. *
  73. *@paramevent
  74. *@return
  75. */
  76. privatefloatspacing(MotionEventevent)
  77. {
  78. floatx=event.getX(0)-event.getX(1);
  79. floaty=event.getY(0)-event.getY(1);
  80. returnFloatMath.sqrt(x*x+y*y);
  81. }
  82. });
  83. }
  84. protectedabstractvoidzoomIn();
  85. protectedabstractvoidzoomOut();
  86. }


main.xml

[html] view plain copy print ?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical">
  6. <TextView
  7. android:id="@+id/text_view"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:textSize="20sp"/>
  11. </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:漫画APP开发笔记之ListView中图片按屏幕宽度缩放
  3. android图片缩放手势检测类--ScaleGestureDetector
  4. Android ImageView 图片等比缩放问题
  5. Android缩放图片Bitmap、Drawable
  6. android通过读取系统属性设置字体缩放的默认值
  7. Android 图片拖动和缩放
  8. 补间动画--缩放动画XML

随机推荐

  1. 创业公司招人才
  2. Android中Adapter中edittext,checkbox记住
  3. Android(安卓)SharedPreferences应用解析
  4. android WebView总结
  5. Android如何查看应用签名信息
  6. Android这四个你不可不知的知识点,你都了
  7. android 笔记----禁止横屏和竖屏切换
  8. Android(安卓)USB Gadget复合设备驱动(打
  9. android cocos2d-x for Android安装和学
  10. Android多点触摸实现