android 缩放字体,android 两点缩放字体

编程入门 行业动态 更新时间:2024-10-11 23:16:14

android <a href=https://www.elefans.com/category/jswz/34/1770385.html style=缩放字体,android 两点缩放字体"/>

android 缩放字体,android 两点缩放字体

android 两点缩放字体

MultiTouchTestActivity

package src.youer.text;

import java.io.InputStream;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

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)

{

e.printStackTrace();

}

float zoomScale = 0.5f;// 缩放比例

new ZoomTextView(textView, zoomScale);

}

/**

* 读取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");

}

}

ZoomTextView

package src.youer.text;

import android.widget.TextView;

public class ZoomTextView extends ZoomView

{

/** 最小字体 */

public static final float MIN_TEXT_SIZE = 10f;

/** 最大子图 */

public static final float MAX_TEXT_SIZE = 100.0f;

/** 缩放比例 */

float scale;

/** 设置字体大小 */

float textSize;

public ZoomTextView(TextView view, float scale)

{

super(view);

this.scale = scale;

textSize = view.getTextSize();

}

/**

* 放大

*/

protected void zoomOut()

{

textSize += scale;

if (textSize > MAX_TEXT_SIZE)

{

textSize = MAX_TEXT_SIZE;

}

view.setTextSize(textSize);

}

/**

* 缩小

*/

protected void zoomIn()

{

textSize -= scale;

if (textSize < MIN_TEXT_SIZE)

{

textSize = MIN_TEXT_SIZE;

}

view.setTextSize(textSize);

}

}

ZoomView

package src.youer.text;

import android.util.FloatMath;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

/**

* view缩放

*

* @author Administrator

*

* @param

*/

public abstract class ZoomView

{

protected V view;

// -----------------------------------------------

private static final int NONE = 0;// 空

private static final int DRAG = 1;// 按下第一个点

private static final int ZOOM = 2;// 按下第二个点

/** 屏幕上点的数量 */

private int mode = NONE;

/** 记录按下第二个点距第一个点的距离 */

float oldDist;

public ZoomView(V view)

{

this.view = view;

setTouchListener();

}

private void setTouchListener()

{

view.setOnTouchListener(new OnTouchListener()

{

@Override

public boolean onTouch(View v, MotionEvent event)

{

switch (event.getAction() & MotionEvent.ACTION_MASK)

{

case MotionEvent.ACTION_DOWN:

mode = DRAG;

break;

case MotionEvent.ACTION_UP:

case MotionEvent.ACTION_POINTER_UP:

mode = NONE;

break;

case MotionEvent.ACTION_POINTER_DOWN:

oldDist = spacing(event);

if (oldDist > 10f)

{

mode = ZOOM;

}

break;

case MotionEvent.ACTION_MOVE:

if (mode == ZOOM)

{

// 正在移动的点距初始点的距离

float newDist = spacing(event);

if (newDist > oldDist)

{

zoomOut();

}

if (newDist < oldDist)

{

zoomIn();

}

}

break;

}

return true;

}

/**

* 求出2个触点间的 距离

*

* @param event

* @return

*/

private float spacing(MotionEvent event)

{

float x = event.getX(0) - event.getX(1);

float y = event.getY(0) - event.getY(1);

return FloatMath.sqrt(x * x + y * y);

}

});

}

protected abstract void zoomIn();

protected abstract void zoomOut();

}

main.xml

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:id="@+id/text_view"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="20sp" />

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下载地址:

更多推荐

android 缩放字体,android 两点缩放字体

本文发布于:2024-03-04 01:41:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707921.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:缩放   字体   两点   android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!