与缩放和滚动开放的ImageView [英] Open ImageView with Zoom and Scroll
问题描述
我想打开一个图片,在ImageView的,从一个按钮preSS。我需要的图像是可缩放和滚动。我如何能最好地去实现这一点? 谢谢!
图片可以是PNG或JPG
太感谢你了!
下面是我的新code,你不会介意通过略读,给我一个解决方案,我的所有问题的标签的 ZOOM 的等。我也知道我需要我的形象的 RES 的添加到它
包com.DS;
进口的java.io.File;
进口android.app.Activity;
进口android.content.Intent;
进口android.graphics.Matrix;
进口android.graphics.PointF;
进口android.net.Uri;
进口android.os.Bundle;
进口android.os.Environment;
进口android.util.FloatMath;
进口android.util.Log;
进口android.view.MotionEvent;
进口android.view.View;
进口android.widget.Button;
进口android.widget.ImageView;
公共类CheatMathActivity延伸活动{
/ **第一次创建活动时调用。 * /
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
最终按钮按钮1 =(按钮)findViewById(R.id.button1);
button1.setOnTouchListener(新View.OnTouchListener(){
公共无效onTouch(视图v){
//打开代数图片
公共布尔onTouch(视图V,MotionEvent事件){
// TODO自动生成方法存根
ImageView的观点=(ImageView的)V;
view.setScaleType(ImageView.ScaleType.MATRIX);
浮规模;
dumpEvent(事件);
//这里处理触摸事件...
矩阵矩阵;
矩阵savedMatrix;
的PointF启动;
目标模式;
浮动oldDist;
的PointF中旬;
开关(event.getAction()及event.ACTION_MASK)
{
案例MotionEvent.ACTION_DOWN://第一指仅下跌
savedMatrix.set(矩阵);
start.set(event.getX(),event.getY());
Log.d(TAG模式= DRAG); //写入LogCat中
模式=阻力;
打破;
案例MotionEvent.ACTION_UP://第一手指抬起
案例MotionEvent.ACTION_POINTER_UP://第二根手指抬起
模式=无;
Log.d(TAG模式= NONE);
打破;
案例MotionEvent.ACTION_POINTER_DOWN://第一和第二指下跌
oldDist =间距(事件);
Log.d(TAG,oldDist =+ oldDist);
如果(oldDist> 5F){
savedMatrix.set(矩阵);
中点(中,事件);
模式=变焦;
Log.d(TAG模式= ZOOM);
}
打破;
案例MotionEvent.ACTION_MOVE:
如果(模式==拖动)
{
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x,event.getY() - start.y); //创建点的矩阵变换
}
否则,如果(模式== ZOOM)
{
//捏缩放
浮newDist =间距(事件);
Log.d(TAG,newDist =+ newDist);
如果(newDist> 5F)
{
matrix.set(savedMatrix);
规模= newDist / oldDist; //设置的比例
//矩阵...如果规模> 1手段
//放大......如果规模< 1手段
// 缩小
matrix.postScale(规模化,规模化,mid.x,mid.y);
}
}
打破;
}
view.setImageMatrix(矩阵); //显示在屏幕上的转变
返回true; //表示事件已经被处理
}
私人浮动间距(MotionEvent事件)
{
浮X = event.getX(0) - event.getX(1);
浮Y = event.getY(0) - event.getY(1);
返回FloatMath.sqrt(X * X + Y * Y);
}
/ *
* ------------------------------------------------- -------------------------
*方法:中点参数:的PointF对象,MotionEvent返回:Void
*说明:计算两个手指之间的中点
* ------------------------------------------------- -----------
* /
私人无效中点(的PointF点,MotionEvent事件)
{
浮X = event.getX(0)+ event.getX(1);
浮Y = event.getY(0)+ event.getY(1);
point.set(X / 2,Y / 2);
}
/ **显示在LogCat中查看事件,调试* /
私人无效dumpEvent(MotionEvent事件);
{
字符串名称[] = {DOWN,UP,移动,取消,外,POINTER_DOWN,POINTER_UP,7?,8?,9? };
StringBuilder的SB =新的StringBuilder();
INT行动= event.getAction();
INT行动code =动作和放大器; MotionEvent.ACTION_MASK;
sb.append(事件响应_)追加(姓名[动作code])。
如果(动作code == MotionEvent.ACTION_POINTER_DOWN ||行动code == MotionEvent.ACTION_POINTER_UP)
{
sb.append((PID).append(作用>> MotionEvent.ACTION_POINTER_ID_SHIFT);
sb.append());
}
sb.append([);
的for(int i = 0; I< event.getPointerCount();我++)
{
。sb.append(#)追加(ⅰ);
sb.append((PID).append(event.getPointerId(ⅰ));
sb.append()=)追加((int)的event.getX(ⅰ))。
。sb.append(,)追加((int)的event.getY(ⅰ));
如果第(i + 1&其中; event.getPointerCount())
sb.append(;);
}
sb.append(]);
Log.d(触摸事件---------,sb.toString());
}
}
@覆盖
公共布尔onTouch(查看为arg0,MotionEvent ARG1){
// TODO自动生成方法存根
返回false;
}
});
最终按钮按钮2 =(按钮)findViewById(R.id.button2);
button2.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(视图v){
//打开下一个子集图片
}
});
}
公共布尔onTouch(视图V,MotionEvent事件){
// TODO自动生成方法存根
ImageView的观点=(ImageView的)V;
view.setScaleType(ImageView.ScaleType.MATRIX);
浮规模;
dumpEvent(事件);
//这里处理触摸事件...
矩阵矩阵;
矩阵savedMatrix;
的PointF启动;
目标模式;
浮动oldDist;
的PointF中旬;
开关(event.getAction()及event.ACTION_MASK)
{
案例MotionEvent.ACTION_DOWN://第一指仅下跌
savedMatrix.set(矩阵);
start.set(event.getX(),event.getY());
Log.d(TAG模式= DRAG); //写入LogCat中
模式=阻力;
打破;
案例MotionEvent.ACTION_UP://第一手指抬起
案例MotionEvent.ACTION_POINTER_UP://第二根手指抬起
模式=无;
Log.d(TAG模式= NONE);
打破;
案例MotionEvent.ACTION_POINTER_DOWN://第一和第二指下跌
oldDist =间距(事件);
Log.d(TAG,oldDist =+ oldDist);
如果(oldDist> 5F){
savedMatrix.set(矩阵);
中点(中,事件);
模式=变焦;
Log.d(TAG模式= ZOOM);
}
打破;
案例MotionEvent.ACTION_MOVE:
如果(模式==拖动)
{
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x,event.getY() - start.y); //创建点的矩阵变换
}
否则,如果(模式== ZOOM)
{
//捏缩放
浮newDist =间距(事件);
Log.d(TAG,newDist =+ newDist);
如果(newDist> 5F)
{
matrix.set(savedMatrix);
规模= newDist / oldDist; //设置的比例
//矩阵...如果规模> 1手段
//放大......如果规模< 1手段
// 缩小
matrix.postScale(规模化,规模化,mid.x,mid.y);
}
}
打破;
}
view.setImageMatrix(矩阵); //显示在屏幕上的转变
返回true; //表示事件已经被处理
}
私人浮动间距(MotionEvent事件)
{
浮X = event.getX(0) - event.getX(1);
浮Y = event.getY(0) - event.getY(1);
返回FloatMath.sqrt(X * X + Y * Y);
}
/ *
* ------------------------------------------------- -------------------------
*方法:中点参数:的PointF对象,MotionEvent返回:Void
*说明:计算两个手指之间的中点
* ------------------------------------------------- -----------
* /
私人无效中点(的PointF点,MotionEvent事件)
{
浮X = event.getX(0)+ event.getX(1);
浮Y = event.getY(0)+ event.getY(1);
point.set(X / 2,Y / 2);
}
/ **显示在LogCat中查看事件,调试* /
私人无效dumpEvent(MotionEvent事件)
{
字符串名称[] = {DOWN,UP,移动,取消,外,POINTER_DOWN,POINTER_UP,7?,8?,9? };
StringBuilder的SB =新的StringBuilder();
INT行动= event.getAction();
INT行动code =动作和放大器; MotionEvent.ACTION_MASK;
sb.append(事件响应_)追加(姓名[动作code])。
如果(动作code == MotionEvent.ACTION_POINTER_DOWN ||行动code == MotionEvent.ACTION_POINTER_UP)
{
sb.append((PID).append(作用>> MotionEvent.ACTION_POINTER_ID_SHIFT);
sb.append());
}
sb.append([);
的for(int i = 0; I< event.getPointerCount();我++)
{
。sb.append(#)追加(ⅰ);
sb.append((PID).append(event.getPointerId(ⅰ));
sb.append()=)追加((int)的event.getX(ⅰ))。
。sb.append(,)追加((int)的event.getY(ⅰ));
如果第(i + 1&其中; event.getPointerCount())
sb.append(;);
}
sb.append(]);
Log.d(触摸事件---------,sb.toString());
}
}
只需添加这些低于您的活动方式。另外,你需要调用如下这种方法,你的活动必须实施 OnTouchListener
。
imaveViewInstance.setOnTouchListener(本);
@覆盖
公共布尔onTouch(视图V,MotionEvent事件){
// TODO自动生成方法存根
ImageView的观点=(ImageView的)V;
view.setScaleType(ImageView.ScaleType.MATRIX);
浮规模;
dumpEvent(事件);
//这里处理触摸事件...
开关(event.getAction()及event.ACTION_MASK)
{
案例MotionEvent.ACTION_DOWN://第一指仅下跌
savedMatrix.set(矩阵);
start.set(event.getX(),event.getY());
Log.d(TAG模式= DRAG); //写入LogCat中
模式=阻力;
打破;
案例MotionEvent.ACTION_UP://第一手指抬起
案例MotionEvent.ACTION_POINTER_UP://第二根手指抬起
模式=无;
Log.d(TAG模式= NONE);
打破;
案例MotionEvent.ACTION_POINTER_DOWN://第一和第二指下跌
oldDist =间距(事件);
Log.d(TAG,oldDist =+ oldDist);
如果(oldDist> 5F){
savedMatrix.set(矩阵);
中点(中,事件);
模式=变焦;
Log.d(TAG模式= ZOOM);
}
打破;
案例MotionEvent.ACTION_MOVE:
如果(模式==拖动)
{
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x,event.getY() - start.y); //创建点的矩阵变换
}
否则,如果(模式== ZOOM)
{
//捏缩放
浮newDist =间距(事件);
Log.d(TAG,newDist =+ newDist);
如果(newDist> 5F)
{
matrix.set(savedMatrix);
规模= newDist / oldDist; //设置的比例
//矩阵...如果规模> 1手段
//放大......如果规模< 1手段
// 缩小
matrix.postScale(规模化,规模化,mid.x,mid.y);
}
}
打破;
}
view.setImageMatrix(矩阵); //显示在屏幕上的转变
返回true; //表示事件已经被处理
}
私人浮动间距(MotionEvent事件)
{
浮X = event.getX(0) - event.getX(1);
浮Y = event.getY(0) - event.getY(1);
返回FloatMath.sqrt(X * X + Y * Y);
}
/ *
* ------------------------------------------------- -------------------------
*方法:中点参数:的PointF对象,MotionEvent返回:Void
*说明:计算两个手指之间的中点
* ------------------------------------------------- -----------
* /
私人无效中点(的PointF点,MotionEvent事件)
{
浮X = event.getX(0)+ event.getX(1);
浮Y = event.getY(0)+ event.getY(1);
point.set(X / 2,Y / 2);
}
/ **显示在LogCat中查看事件,调试* /
私人无效dumpEvent(MotionEvent事件)
{
字符串名称[] = {DOWN,UP,移动,取消,外,POINTER_DOWN,POINTER_UP,7?,8?,9? };
StringBuilder的SB =新的StringBuilder();
INT行动= event.getAction();
INT行动code =动作和放大器; MotionEvent.ACTION_MASK;
sb.append(事件响应_)追加(姓名[动作code])。
如果(动作code == MotionEvent.ACTION_POINTER_DOWN ||行动code == MotionEvent.ACTION_POINTER_UP)
{
sb.append((PID).append(作用>> MotionEvent.ACTION_POINTER_ID_SHIFT);
sb.append());
}
sb.append([);
的for(int i = 0; I< event.getPointerCount();我++)
{
。sb.append(#)追加(ⅰ);
sb.append((PID).append(event.getPointerId(ⅰ));
sb.append()=)追加((int)的event.getX(ⅰ))。
。sb.append(,)追加((int)的event.getY(ⅰ));
如果第(i + 1&其中; event.getPointerCount())
sb.append(;);
}
sb.append(]);
Log.d(触摸事件---------,sb.toString());
}
I would like to open an Image, in ImageView, from a button press. I need the image to be zoomable and scrollable. How would I best go about accomplishing this? Thank you!
The Image can be either PNG or JPG
Thank you so much!
Here is my new code, you wouldn't mind skimming through and giving me a solution to all my problems with TAG, ZOOM , etc... I also know I need to add my image res to it
package com.DS;
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.FloatMath;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class CheatMathActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button button1 = (Button) findViewById(R.id.button1);
button1.setOnTouchListener(new View.OnTouchListener(){
public void onTouch(View v) {
//Opens Algebra Image
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
ImageView view = (ImageView) v;
view.setScaleType(ImageView.ScaleType.MATRIX);
float scale;
dumpEvent(event);
// Handle touch events here...
Matrix matrix;
Matrix savedMatrix;
PointF start;
Object mode;
float oldDist;
PointF mid;
switch (event.getAction() & event.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN: // first finger down only
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
Log.d(TAG, "mode=DRAG"); // write to LogCat
mode = DRAG;
break;
case MotionEvent.ACTION_UP: // first finger lifted
case MotionEvent.ACTION_POINTER_UP: // second finger lifted
mode = NONE;
Log.d(TAG, "mode=NONE");
break;
case MotionEvent.ACTION_POINTER_DOWN: // first and second finger down
oldDist = spacing(event);
Log.d(TAG, "oldDist=" + oldDist);
if (oldDist > 5f) {
savedMatrix.set(matrix);
midPoint(mid, event);
mode = ZOOM;
Log.d(TAG, "mode=ZOOM");
}
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG)
{
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x, event.getY() - start.y); // create the transformation in the matrix of points
}
else if (mode == ZOOM)
{
// pinch zooming
float newDist = spacing(event);
Log.d(TAG, "newDist=" + newDist);
if (newDist > 5f)
{
matrix.set(savedMatrix);
scale = newDist / oldDist; // setting the scaling of the
// matrix...if scale > 1 means
// zoom in...if scale < 1 means
// zoom out
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
break;
}
view.setImageMatrix(matrix); // display the transformation on screen
return true; // indicate event was handled
}
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);
}
/*
* --------------------------------------------------------------------------
* Method: midPoint Parameters: PointF object, MotionEvent Returns: void
* Description: calculates the midpoint between the two fingers
* ------------------------------------------------------------
*/
private void midPoint(PointF point, MotionEvent event)
{
float x = event.getX(0) + event.getX(1);
float y = event.getY(0) + event.getY(1);
point.set(x / 2, y / 2);
}
/** Show an event in the LogCat view, for debugging */
private void dumpEvent(MotionEvent event);
{
String names[] = { "DOWN", "UP", "MOVE", "CANCEL", "OUTSIDE","POINTER_DOWN", "POINTER_UP", "7?", "8?", "9?" };
StringBuilder sb = new StringBuilder();
int action = event.getAction();
int actionCode = action & MotionEvent.ACTION_MASK;
sb.append("event ACTION_").append(names[actionCode]);
if (actionCode == MotionEvent.ACTION_POINTER_DOWN || actionCode == MotionEvent.ACTION_POINTER_UP)
{
sb.append("(pid ").append(action >> MotionEvent.ACTION_POINTER_ID_SHIFT);
sb.append(")");
}
sb.append("[");
for (int i = 0; i < event.getPointerCount(); i++)
{
sb.append("#").append(i);
sb.append("(pid ").append(event.getPointerId(i));
sb.append(")=").append((int) event.getX(i));
sb.append(",").append((int) event.getY(i));
if (i + 1 < event.getPointerCount())
sb.append(";");
}
sb.append("]");
Log.d("Touch Events ---------", sb.toString());
}
}
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
return false;
}
});
final Button button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
//Opens Next Subset Image
}
});
}
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
ImageView view = (ImageView) v;
view.setScaleType(ImageView.ScaleType.MATRIX);
float scale;
dumpEvent(event);
// Handle touch events here...
Matrix matrix;
Matrix savedMatrix;
PointF start;
Object mode;
float oldDist;
PointF mid;
switch (event.getAction() & event.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN: // first finger down only
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
Log.d(TAG, "mode=DRAG"); // write to LogCat
mode = DRAG;
break;
case MotionEvent.ACTION_UP: // first finger lifted
case MotionEvent.ACTION_POINTER_UP: // second finger lifted
mode = NONE;
Log.d(TAG, "mode=NONE");
break;
case MotionEvent.ACTION_POINTER_DOWN: // first and second finger down
oldDist = spacing(event);
Log.d(TAG, "oldDist=" + oldDist);
if (oldDist > 5f) {
savedMatrix.set(matrix);
midPoint(mid, event);
mode = ZOOM;
Log.d(TAG, "mode=ZOOM");
}
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG)
{
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x, event.getY() - start.y); // create the transformation in the matrix of points
}
else if (mode == ZOOM)
{
// pinch zooming
float newDist = spacing(event);
Log.d(TAG, "newDist=" + newDist);
if (newDist > 5f)
{
matrix.set(savedMatrix);
scale = newDist / oldDist; // setting the scaling of the
// matrix...if scale > 1 means
// zoom in...if scale < 1 means
// zoom out
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
break;
}
view.setImageMatrix(matrix); // display the transformation on screen
return true; // indicate event was handled
}
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);
}
/*
* --------------------------------------------------------------------------
* Method: midPoint Parameters: PointF object, MotionEvent Returns: void
* Description: calculates the midpoint between the two fingers
* ------------------------------------------------------------
*/
private void midPoint(PointF point, MotionEvent event)
{
float x = event.getX(0) + event.getX(1);
float y = event.getY(0) + event.getY(1);
point.set(x / 2, y / 2);
}
/** Show an event in the LogCat view, for debugging */
private void dumpEvent(MotionEvent event)
{
String names[] = { "DOWN", "UP", "MOVE", "CANCEL", "OUTSIDE","POINTER_DOWN", "POINTER_UP", "7?", "8?", "9?" };
StringBuilder sb = new StringBuilder();
int action = event.getAction();
int actionCode = action & MotionEvent.ACTION_MASK;
sb.append("event ACTION_").append(names[actionCode]);
if (actionCode == MotionEvent.ACTION_POINTER_DOWN || actionCode == MotionEvent.ACTION_POINTER_UP)
{
sb.append("(pid ").append(action >> MotionEvent.ACTION_POINTER_ID_SHIFT);
sb.append(")");
}
sb.append("[");
for (int i = 0; i < event.getPointerCount(); i++)
{
sb.append("#").append(i);
sb.append("(pid ").append(event.getPointerId(i));
sb.append(")=").append((int) event.getX(i));
sb.append(",").append((int) event.getY(i));
if (i + 1 < event.getPointerCount())
sb.append(";");
}
sb.append("]");
Log.d("Touch Events ---------", sb.toString());
}
}
Just add these below methods in your activity. Also, you need call this method as below and your activity must implement OnTouchListener
.
imaveViewInstance.setOnTouchListener(this);
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
ImageView view = (ImageView) v;
view.setScaleType(ImageView.ScaleType.MATRIX);
float scale;
dumpEvent(event);
// Handle touch events here...
switch (event.getAction() & event.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN: // first finger down only
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
Log.d(TAG, "mode=DRAG"); // write to LogCat
mode = DRAG;
break;
case MotionEvent.ACTION_UP: // first finger lifted
case MotionEvent.ACTION_POINTER_UP: // second finger lifted
mode = NONE;
Log.d(TAG, "mode=NONE");
break;
case MotionEvent.ACTION_POINTER_DOWN: // first and second finger down
oldDist = spacing(event);
Log.d(TAG, "oldDist=" + oldDist);
if (oldDist > 5f) {
savedMatrix.set(matrix);
midPoint(mid, event);
mode = ZOOM;
Log.d(TAG, "mode=ZOOM");
}
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG)
{
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x, event.getY() - start.y); // create the transformation in the matrix of points
}
else if (mode == ZOOM)
{
// pinch zooming
float newDist = spacing(event);
Log.d(TAG, "newDist=" + newDist);
if (newDist > 5f)
{
matrix.set(savedMatrix);
scale = newDist / oldDist; // setting the scaling of the
// matrix...if scale > 1 means
// zoom in...if scale < 1 means
// zoom out
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
break;
}
view.setImageMatrix(matrix); // display the transformation on screen
return true; // indicate event was handled
}
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);
}
/*
* --------------------------------------------------------------------------
* Method: midPoint Parameters: PointF object, MotionEvent Returns: void
* Description: calculates the midpoint between the two fingers
* ------------------------------------------------------------
*/
private void midPoint(PointF point, MotionEvent event)
{
float x = event.getX(0) + event.getX(1);
float y = event.getY(0) + event.getY(1);
point.set(x / 2, y / 2);
}
/** Show an event in the LogCat view, for debugging */
private void dumpEvent(MotionEvent event)
{
String names[] = { "DOWN", "UP", "MOVE", "CANCEL", "OUTSIDE","POINTER_DOWN", "POINTER_UP", "7?", "8?", "9?" };
StringBuilder sb = new StringBuilder();
int action = event.getAction();
int actionCode = action & MotionEvent.ACTION_MASK;
sb.append("event ACTION_").append(names[actionCode]);
if (actionCode == MotionEvent.ACTION_POINTER_DOWN || actionCode == MotionEvent.ACTION_POINTER_UP)
{
sb.append("(pid ").append(action >> MotionEvent.ACTION_POINTER_ID_SHIFT);
sb.append(")");
}
sb.append("[");
for (int i = 0; i < event.getPointerCount(); i++)
{
sb.append("#").append(i);
sb.append("(pid ").append(event.getPointerId(i));
sb.append(")=").append((int) event.getX(i));
sb.append(",").append((int) event.getY(i));
if (i + 1 < event.getPointerCount())
sb.append(";");
}
sb.append("]");
Log.d("Touch Events ---------", sb.toString());
}
这篇关于与缩放和滚动开放的ImageView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!