目标=把helloworld的文字变成可以缩放的。
测试=需要能实体手机,虚拟机似乎不能进行触摸缩放测试。
版本=android 2.3.3,target=android-10
参考了网上例子。
关键点
=============main.xml
<TextView android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello" />
=============A1Activity.java
public void onCreate中,加入:
TextView textView = (TextView) findViewById(R.id.text);
textView.setOnTouchListener(this);
加入public boolean onTouch和相关变量
public boolean onTouch中,最后return true;是关键。
关键文件代码
=============main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello" />
</LinearLayout>
=============A1Activity.java
package com.ex.a1205;
import android.app.Activity;
import android.os.Bundle;
import android.util.FloatMath;
import android.util.Log;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.TextView;
public class A1Activity extends Activity implements OnTouchListener {
private static final String TAG = "textZoom";
// We can be in one of these 2 states
static final int NONE = 0;
static final int ZOOM = 1;
int mode = NONE;
static final int MIN_FONT_SIZE = 20;
static final int MAX_FONT_SIZE = 150;
float oldDist = 1f;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView = (TextView) findViewById(R.id.text);
textView.setOnTouchListener(this);
}
public boolean onTouch(View v, MotionEvent event) {
TextView textView = (TextView) findViewById(R.id.text);
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
Log.d(TAG, "oldDist=" + oldDist);
if (oldDist > 10f) {
mode = ZOOM;
}
break;
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
break;
case MotionEvent.ACTION_MOVE:
if (mode == ZOOM) {
float newDist = spacing(event);
if (newDist > 10f) {
float scale = newDist / oldDist;
if (scale > 1) {
scale = 1.1f;
} else if (scale < 1) {
scale = 0.95f;
}
float currentSize = textView.getTextSize() * scale;
if ((currentSize < MAX_FONT_SIZE && currentSize > MIN_FONT_SIZE)
|| (currentSize >= MAX_FONT_SIZE && scale < 1)
|| (currentSize <= MIN_FONT_SIZE && scale > 1)) {
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, currentSize);
}
}
}
break;
}
return true;
}
/** Determine the space between the first two fingers */
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);
}
}
执行结果
似曾相识
- 大小: 53 KB
- 大小: 2.7 KB
- 大小: 6.8 KB
分享到:
相关推荐
【Node.js-CommentGallery利用Fresco实现的一个Android图像库】 在Android应用开发中,处理图像是一项挑战性的工作,尤其是在内存管理、性能优化以及用户体验方面。CommentGallery是一个利用Node.js技术构建的...
"图片放大缩小,A scrollable, zoomable, and scalable picture box"这个标题所描述的是一种专门用于显示图像的控件,它具有滚动、缩放和可伸缩的功能。这种控件通常在图形用户界面(GUI)应用中使用,例如图像查看...
"zoomable-image-label-master"项目是针对图像处理的一种工具,它提供了以鼠标指针为中心的图片缩放功能,同时支持区域兴趣(ROI,Region of Interest)的框选操作。这个工具对于图像分析、标注和训练模型时的预处理...
**Zoomable: 一个基于jQuery的可缩放插件** Zoomable是一个强大的jQuery插件,专为实现图像和内容的可缩放功能而设计。它允许用户通过简单的鼠标交互(如点击或滚动)来放大和查看细节,尤其适用于在网页上展示...
Zoomable.js Zoomable很小(最小3k),没有依赖项,易于使用,图像不会破坏上下文。 使用Zoomable,用户无需打开新的浏览器标签即可查看自己的那些大而漂亮的图片。 Zoomable是一种灯箱,灵感来自Medium.com上看到的...
Zoomy is an easy to use pinch-to-zoom Android library Installation Zoomy is available in the JCenter, so you just need to add it as a dependency compile 'com.ablanco.zoomy:zoomy:{latest version}' ...
总的来说,创建一个“Android自制手机相册”涉及到的知识点包括:MediaStore内容提供者、数据查询与存储、ListView/RecyclerView的使用、图片加载库(如Glide或Picasso)、手势识别、Zoomable控件、运行时权限管理、...
- **Zoomable ImageView**:为了实现图片的放大功能,可以使用支持手势缩放的ImageView,如`PhotoView`或`GestureImageView`。这些库提供了缩放、平移和旋转的功能。 - **PopupWindow** 或 **Dialog**:当图片被...
查看示例: () () ()快速开始import zoomable from 'd3-zoomable';或者const zoomable = require('d3-zoomable');甚至[removed][removed]然后const myZoom = zoomable();myZoom() .svgEl(<SVG eleme
1. **ImageView与Zoomable ImageView**: - `ImageView`是Android中用于展示图片的基础组件,但默认不支持缩放。为了实现查看大图,我们需要使用支持缩放的`ImageView`,如`GestureZoomImageView`或`PhotoView`。...
Android: TouchImageView Created by: Mike Ortiz Contributions by: Patrick Lackemacher Babay88 @ipsilondev hank-cp singpolyma Capabilities: TouchImageView extends ImageView and supports all of ...
**Zoomable Visual Transformation Machine (ZVTM) 开源详解** Zoomable User Interface(ZUI)是一种用户界面设计模式,它允许用户在多个尺度上查看和操作数据,从全局视图到非常具体的细节视图,而Zoomable ...
**React-Zoomable-Sunburst:构建交互式可视化应用程序** 在现代Web开发中,React作为一个强大的JavaScript库,已经成为构建用户界面的首选工具。它允许开发者高效地管理组件状态,并通过虚拟DOM实现高效的更新。`...
"A scrollable, zoomable, and scalable picture box" 是一个专为这种需求设计的组件,它允许用户在界面上查看、缩放和滚动图片,提供了更加灵活和直观的交互体验。下面我们将详细探讨这个知识点。 1. **滚动功能**...
Zoomable(state = state) { Text(text = "Zoom me!") } 执照 MIT License Copyright (c) 2021 Tlaster Permission is hereby granted, free of charge, to any person obtaining a copy of this software and ass
- 对于图片查看功能,项目可能使用了ImageView的Zoomable实现,如PhotoView或GestureImageView。这些库允许用户通过捏合手势缩放图片,提供类似Google Maps的平移和缩放体验。 5. **UI设计**: - 界面良好意味着...
react-native-zoomable-view 一种视图组件,可通过捏合缩放,点击移动和双击缩放来进行React。 您可以缩放所有内容,包括普通图像,文本和更复杂的嵌套视图。 我们已经在两个项目中的生产中使用了该组件,但是出于...
适用于Android的可缩放ImageView可以在AdapterView和Recyclerview中使用。一个可拉伸拉伸的ImageView,可在AdapterView和RecyclerView中使用。 特征 使用多点触控进行缩放。 可以在AdapterView和Recyclerview中...
首先,我们需要理解核心概念——缩放视图(Zoomable View)。在Android中,我们通常使用`ImageView`或自定义视图来显示图片。为了实现放大镜效果,我们需要对视图进行扩展,添加缩放和平移操作。可以基于`...
Supported Android versions API 22 and higher Earlier versions are to be added soon Supported technologies Databinding Livedata Features Collapsing toolbar Zoomable photo image Tabs pager Option ...