`

zoomable android textview

阅读更多

目标=把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);
  }

}

执行结果

  middle

 

 

 

似曾相识

似曾相识

 

  • 大小: 53 KB
  • 大小: 2.7 KB
  • 大小: 6.8 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Node.js-CommentGallery利用Fresco实现的一个Android图像库

    【Node.js-CommentGallery利用Fresco实现的一个Android图像库】 在Android应用开发中,处理图像是一项挑战性的工作,尤其是在内存管理、性能优化以及用户体验方面。CommentGallery是一个利用Node.js技术构建的...

    图片放大缩小,A scrollable, zoomable, and scalable picture box

    "图片放大缩小,A scrollable, zoomable, and scalable picture box"这个标题所描述的是一种专门用于显示图像的控件,它具有滚动、缩放和可伸缩的功能。这种控件通常在图形用户界面(GUI)应用中使用,例如图像查看...

    zoomable-image-label-master_以鼠标指针为中心缩放图片以及ROI的框选_

    "zoomable-image-label-master"项目是针对图像处理的一种工具,它提供了以鼠标指针为中心的图片缩放功能,同时支持区域兴趣(ROI,Region of Interest)的框选操作。这个工具对于图像分析、标注和训练模型时的预处理...

    Zoomable:一个 jQuery 插件

    **Zoomable: 一个基于jQuery的可缩放插件** Zoomable是一个强大的jQuery插件,专为实现图像和内容的可缩放功能而设计。它允许用户通过简单的鼠标交互(如点击或滚动)来放大和查看细节,尤其适用于在网页上展示...

    zoomable-js:一款适用于所有人的小型图像缩放器

    Zoomable.js Zoomable很小(最小3k),没有依赖项,易于使用,图像不会破坏上下文。 使用Zoomable,用户无需打开新的浏览器标签即可查看自己的那些大而漂亮的图片。 Zoomable是一种灯箱,灵感来自Medium.com上看到的...

    Android代码-Zoomy

    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自制手机相册

    总的来说,创建一个“Android自制手机相册”涉及到的知识点包括:MediaStore内容提供者、数据查询与存储、ListView/RecyclerView的使用、图片加载库(如Glide或Picasso)、手势识别、Zoomable控件、运行时权限管理、...

    android之实现图片左右滑动 点击放大功能.zip

    - **Zoomable ImageView**:为了实现图片的放大功能,可以使用支持手势缩放的ImageView,如`PhotoView`或`GestureImageView`。这些库提供了缩放、平移和旋转的功能。 - **PopupWindow** 或 **Dialog**:当图片被...

    d3-zoomable:将d3-zoom功能应用于DOM元素的简便方法

    查看示例: () () ()快速开始import zoomable from 'd3-zoomable';或者const zoomable = require('d3-zoomable');甚至[removed][removed]然后const myZoom = zoomable();myZoom() .svgEl(&lt;SVG eleme

    android点击查看大图(长按保存图片)

    1. **ImageView与Zoomable ImageView**: - `ImageView`是Android中用于展示图片的基础组件,但默认不支持缩放。为了实现查看大图,我们需要使用支持缩放的`ImageView`,如`GestureZoomImageView`或`PhotoView`。...

    Android代码-TouchImageView

    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-开源

    **Zoomable Visual Transformation Machine (ZVTM) 开源详解** Zoomable User Interface(ZUI)是一种用户界面设计模式,它允许用户在多个尺度上查看和操作数据,从全局视图到非常具体的细节视图,而Zoomable ...

    react-zoomable-sunburst:创建React应用程序+ observablehq

    **React-Zoomable-Sunburst:构建交互式可视化应用程序** 在现代Web开发中,React作为一个强大的JavaScript库,已经成为构建用户界面的首选工具。它允许开发者高效地管理组件状态,并通过虚拟DOM实现高效的更新。`...

    A scrollable, zoomable, and scalable picture box,图片放大缩小

    "A scrollable, zoomable, and scalable picture box" 是一个专为这种需求设计的组件,它允许用户在界面上查看、缩放和滚动图片,提供了更加灵活和直观的交互体验。下面我们将详细探讨这个知识点。 1. **滚动功能**...

    Zoomable:通过对Jetpack Compose的拖动支持,轻松放大和缩小

    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

    android 网络相册实现源码

    - 对于图片查看功能,项目可能使用了ImageView的Zoomable实现,如PhotoView或GestureImageView。这些库允许用户通过捏合手势缩放图片,提供类似Google Maps的平移和缩放体验。 5. **UI设计**: - 界面良好意味着...

    react-native-zoomable-view:react-native的视图组件,具有捏合缩放,点击移动和双击缩放功能

    react-native-zoomable-view 一种视图组件,可通过捏合缩放,点击移动和双击缩放来进行React。 您可以缩放所有内容,包括普通图像,文本和更复杂的嵌套视图。 我们已经在两个项目中的生产中使用了该组件,但是出于...

    ZoomInImageView:A zoomable ImageView for Android, can be used in AdapterView and Recyclerview. 一个可拉伸拖动的ImageView ,可在AdapterView和RecyclerView中使用

    适用于Android的可缩放ImageView可以在AdapterView和Recyclerview中使用。一个可拉伸拉伸的ImageView,可在AdapterView和RecyclerView中使用。 特征 使用多点触控进行缩放。 可以在AdapterView和Recyclerview中...

    Android图片局部放大镜

    首先,我们需要理解核心概念——缩放视图(Zoomable View)。在Android中,我们通常使用`ImageView`或自定义视图来显示图片。为了实现放大镜效果,我们需要对视图进行扩展,添加缩放和平移操作。可以基于`...

    Android代码-ProfileBar

    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 ...

Global site tag (gtag.js) - Google Analytics