触摸控制字体大小(自定义TextView)
2016-10-26 19:29
148 查看
首先自定义一个类:继承自TextView控件
public class ZoomTextView2 extends TextView {
private float oldDistance;
private float newDistance;
float textSize = this.getTextSize();
public ZoomTextView2(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public ZoomTextView2(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public ZoomTextView2(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_POINTER_DOWN:
oldDistance = spacing(event);
break;
case MotionEvent.ACTION_MOVE:
if (event.getPointerCount() >= 2) {
newDistance = spacing(event);
zoomTex(newDistance/oldDistance);
oldDistance = newDistance;
}
break;
default:
break;
}
return true;
}
private void zoomTex(float f) {
textSize *= f;
this.setTextSize(px2sp(getContext(),textSize));
}
private int px2sp(Context context, float textSize2) {
// TODO Auto-generated method stub
float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (textSize2/scaledDensity);
}
/**
* 两指之间距离
* @param event
* @return
*/
private float spacing(MotionEvent event) {
// TODO Auto-generated method stub
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return (float) Math.sqrt(x*x + y*y);
}
}
public class ZoomTextView2 extends TextView {
private float oldDistance;
private float newDistance;
float textSize = this.getTextSize();
public ZoomTextView2(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public ZoomTextView2(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public ZoomTextView2(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_POINTER_DOWN:
oldDistance = spacing(event);
break;
case MotionEvent.ACTION_MOVE:
if (event.getPointerCount() >= 2) {
newDistance = spacing(event);
zoomTex(newDistance/oldDistance);
oldDistance = newDistance;
}
break;
default:
break;
}
return true;
}
private void zoomTex(float f) {
textSize *= f;
this.setTextSize(px2sp(getContext(),textSize));
}
private int px2sp(Context context, float textSize2) {
// TODO Auto-generated method stub
float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (textSize2/scaledDensity);
}
/**
* 两指之间距离
* @param event
* @return
*/
private float spacing(MotionEvent event) {
// TODO Auto-generated method stub
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return (float) Math.sqrt(x*x + y*y);
}
}
相关文章推荐
- Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小
- Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小
- Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小
- Android 自定义TextView实现文本内容自动调整字体大小
- 自定义 view 自定textview显示内容字体的大小颜色控件的宽高
- Android中TextView中的字体大小设置
- Android中的一个TextView中的字体设置不同大小
- 自定义适应屏幕大小的TextView
- 给TextView加上多彩效果:改变部分字体的大小和颜色
- Android TextView 一些字体颜色、大小设置属性
- textView设置字体大小
- Android中TextView的字体大小
- 安卓按键设置TextView字体的大小
- 如何修改 simple_list_item_2 上下两个 textview 的字体大小
- SpannableString 动态设置textView中字体颜色和大小
- android 通过一Textview设置不同大小的字体颜色
- 自定义view时使用xml传递参数-设定TextView中图片大小
- TextView的一些高级应用(自定义字体、显示多种颜色、添加阴影)
- 自定义uialertview的字体和大小颜色等
- 自定义TextView支持第三方字体库(以隶书为例)