Android笔记——Muilti-touch 多点缩放
本文主要讨论文本的多点缩放。
多点缩放原理:通过Android中触摸事件,判断当前屏幕上有多少个点。当有两个或则更多个点时,先保存当前亮点间的距离值oldDisc,手滑动之后,距离发生变化为newDisc。
如果newDisc > oldDisc,放大文字;newDisc < oldDisc,缩小文字;放大缩小的过程其实就是不断的修改文本中字体的大小。设置文字大小的方法是调用textView的setTextSize(float)方法。
代码实现过程:只需要三个文件MultiTouchTestActivity.java,ZoomView.java,ZoomTextView.java。
1. 通过输入输出流将要显示的文件内容读入(MultiTouchTestActivity.java)
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); //缩放的功能在类ZoomTextView中实现
}
/**
* 读取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");
}
}
以上代码中,main.xml布局文件中只有一个TextView,text.txt文件是放在工程目录下的assets文件夹中。读取的字符串以UTF-8格式显示。由于比较简单,在此就不做介绍了。