用android的多点触控来缩放界面的字体
来源:互联网 发布:mysql生成uuid 编辑:程序博客网 时间:2024/05/22 15:02
最近对Android开发很感兴趣,想弄明白用手指在手机屏幕上划动就能控制界面的技术,于是,参照一些资料,自己写了个测试程序,实现用两个手指划动来缩放View中文本的字体。
package com.pyh;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
public abstract class ZoomView<V extends View> {
protected V view;
private boolean startTwoTouchPoint = false;
private double startDistance;
protected float zoomScale = 0.1f;
public ZoomView(V view, float scale) {
this.view = view;
this.zoomScale = scale;
setTouchListener();
}
private static double getDistance(double x1, double y1, double x2, double y2) {
return Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
private void setTouchListener() {
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getPointerCount() == 2) {
if (startTwoTouchPoint == false) {
startDistance = getDistance(event.getX(0), event
.getY(0), event.getX(1), event.getY(1));
startTwoTouchPoint = true;
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
double distance = getDistance(event.getX(0), event
.getY(0), event.getX(1), event.getY(1));
if (distance > startDistance) {
zoomIn();
} else if (distance < startDistance) {
zoomOut();
}
view.invalidate();
}
} else {
startTwoTouchPoint = false;
}
return true;
}
});
}
protected abstract void zoomIn();
protected abstract void zoomOut();
}
package com.pyh;
import android.widget.TextView;
public class ZoomTextView extends ZoomView<TextView> {
public static final float MIN_TEXT_SIZE = 5.0f;
public static final float MAX_TEXT_SIZE = 200.0f;
public ZoomTextView(TextView view, float scale) {
super(view, scale);
}
@Override
protected void zoomOut() {
view.setTextSize(view.getTextSize() - zoomScale);
if (view.getTextSize() < MIN_TEXT_SIZE)
view.setTextSize(MIN_TEXT_SIZE);
}
@Override
protected void zoomIn() {
view.setTextSize(view.getTextSize() + zoomScale);
if (view.getTextSize() > MAX_TEXT_SIZE)
view.setTextSize(MAX_TEXT_SIZE);
}
}
本打算可以实现对各种View的子类都能缩放其文本字体,所以就有了ZoomTextView继承ZoomView的结构,以后也可能会有ZoomEditText、ZoomImageView......
用法如下:
public class MultiTouchActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView=(TextView)this.findViewById(R.id.text_view);
float zoomScale=0.5f;
new ZoomTextView(textView,zoomScale);
}
}
- 用android的多点触控来缩放界面的字体
- android 多点触碰实现图片的缩放
- Android多点触控(图片的缩放Demo)
- android 多点触摸图片缩放的具体实现方法
- 多点触控缩放字体,附源码
- android 的 多点
- android 给界面加指定的字体
- 让Android自带的Gallery实现多点缩放,拖动和边界回弹效果,效果流畅
- 让Android自带的Gallery实现多点缩放,拖动和边界回弹效果,效果流畅
- 让Android自带的Gallery实现多点缩放,拖动和边界回弹效果,效果流畅 .
- 让Android自带的Gallery实现多点缩放,拖动和边界回弹效果,效果流畅
- 让Android自带的Gallery实现多点缩放,拖动和边界回弹效果,效果流畅
- Android学习笔记_38_图片的拖动、缩放功能和多点触摸
- Android中的多点触摸交互处理,可以达到缩放图片的效果
- android多点触摸缩放图片
- Android图片双击缩放,多点缩放,平移
- android通过读取系统属性设置字体缩放的默认值
- Android_多图的双击/多点缩放浏览
- 美丽的一天啊
- wmframework v2.0 手册(四)代码编写说明
- 如何在REHL 下创建daemon进程
- 又游离了
- C#中分割字符串的方法
- 用android的多点触控来缩放界面的字体
- 关于 JSTL c:out 对 XML html 自动转义 转义的禁用
- 返回ADO中Getstring空值的处理
- (转)强烈推荐:240多个jQuery插件
- const参数,const返回值与const函数
- java中ArrayList
- ZJUT1012 勘探油田
- 不带缓存的I/O和标准(带缓存的)I/O
- [转载]web.config connectionStrings 数据库连接字符串的解释