我正在使用Make Sense of Multitouch中的代码示例
来缩放图像视图.在ScaleListener上,我添加ScaleGestureDetector.getFocusX() and getFocusY()
内容以缩放手势的焦点.它工作正常.
问题是,在第一次多点触控时,整个图像绘制位置将变为当前触摸点并从那里进行缩放.你能帮我解决这个问题吗?
这是TouchImageView的My Code Sample.
public class TouchImageViewSample extends ImageView {
private Paint borderPaint = null;
private Paint backgroundPaint = null;
private float mPosX = 0f;
private float mPosY = 0f;
private float mLastTouchX;
private float mLastTouchY;
private static final int INVALID_POINTER_ID = -1;
private static final String LOG_TAG = "TouchImageView";
// The ‘active pointer’ is the one currently moving our object.
private int mActivePointerId = INVALID_POINTER_ID;
public TouchImageViewSample(Context context) …
Run Code Online (Sandbox Code Playgroud) 我必须实现图像缩放,我已经尝试了这么多代码.但我没有完全了解手势事件.我想实现当我们应用双击时,图像将根据触摸位置(事件x和y)进行缩放.我必须实现此时只有缩放没有泛.可以任何身体建议我吗?
编辑:实际上我已经用图像实现了viewflipper,如果我尝试应用平移和缩放效果,有时图像将被更改.我想为单击用户的位置实现缩放效果.
给我一些想法....
我希望能够在android framelayout和imageview中旋转,缩放和移动图像.使用以下代码,我能够做到这一点.但是视图有时会脱离UI.你可以在ACTION_UP中处理旋转(每个ACTION_UP旋转90度)动作事件.以下是我的main.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView android:id="@+id/imageView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/csf6a4_flipped"
android:scaleType="matrix" >
</ImageView>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
以下是我的java文件:
package com.example.rotatezoommove;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.os.Bundle;
import android.util.FloatMath;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
public class RotateZoomMove extends Activity implements OnTouchListener {
private static final String TAG = "Touch";
// These matrices will be used to move and zoom image
Matrix matrix = new Matrix();
Matrix savedMatrix = …
Run Code Online (Sandbox Code Playgroud) 我得到以下代码(来自Ed Burnette的Hello android)工作得很好,我能够拖动和缩放图像.
import android.app.Activity;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.os.Bundle;
import android.util.FloatMath;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
public class Touch extends Activity implements OnTouchListener {
private static final String TAG = "Touch";
// These matrices will be used to move and zoom image
Matrix matrix = new Matrix();
Matrix savedMatrix = new Matrix();
// We can be in one of these 3 states
static final int NONE = 0;
static final int DRAG = …
Run Code Online (Sandbox Code Playgroud) 我已经坚持这个问题八个小时了,所以我觉得是时候得到一些帮助了.
在我开始我的问题之前,我只会让我知道我已经通过这个网站和谷歌,我找到的答案都没有帮助.(这是一个,另一个,另一个.)
这是交易:我有一个扩展的类SurfaceView
(让我们称之为MySurface
)并覆盖其中的许多方法.通常情况下,它会绘制几个正方形和文本框,这一切都很好.一旦用户开始触摸,它就会转换为a Bitmap
,然后绘制每个帧,直到用户释放.
这就是问题:我想实现这样一种功能:用户可以将两根手指放在屏幕上,捏缩放,也可以平移(但只能用两根手指向下).
我发现了一些缩放到缩放的实现,并通过以下方式将它们改编为我的Canvas
对象MySurface
:
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.scale(mScaleVector.z, mScaleVector.z); // This is the scale factor as seen below
canvas.translate(mScaleVector.x, mScaleVector.y); // These are offset values from 0,0, both working fine
// Start draw code
// ...
// End draw code
canvas.restore();
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
float factor = detector.getScaleFactor();
if …
Run Code Online (Sandbox Code Playgroud) 我创建了一个应用程序,其中包含从网站的URL加载的小图像.我希望当用户点击该小图片时,它将以全屏显示图像,并且还能够缩放和平移该图像.
我所做的是在内置缩放控件的WebView中显示图像,但结果很难看.(我已将布局设置为wrap_content,因此不会显示白色区域,但会导致图像不动态缩放).
有解决方案吗 抱歉我的英语不好
我在过去 2 天遇到了一个问题,因为我是新手,所以无法解决它。实际上,我正在开发一个需要在 Android ImageView 上进行缩放和两指旋转的 Android 应用程序。我得到了多个教程和解决方案,这些教程和解决方案适用于双指缩放,但不适用于 2 指旋转。我正在分享易于理解的最简单的教程,我想将其扩展为 2 指旋转。这是代码片段:
public class MainActivity extends Activity {
private ImageView mImageView;
private Matrix mMatrix = new Matrix();
private float mScale = 1f;
private ScaleGestureDetector mScaleGestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView = (ImageView) findViewById(R.id.imageView);
mScaleGestureDetector = new ScaleGestureDetector(this, new ScaleListener());
}
public boolean onTouchEvent(MotionEvent ev) {
mScaleGestureDetector.onTouchEvent(ev);
return true;
}
private class ScaleListener extends ScaleGestureDetector.
SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
mScale *= detector.getScaleFactor();
mScale …
Run Code Online (Sandbox Code Playgroud) 我看过很多帖子,但找不到答案.我想用另一个位于根图像下方的小图像旋转根图像.
虽然旋转它的工作但我第一次按它时,由于math.tan(),它会跳到45度,我想我有一个计算问题.
rotateImage.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
final int action = MotionEventCompat.getActionMasked(event);
switch (action) {
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_DOWN:
rotateX = event.getRawX() - rotateImage.getWidth() / 2;
rotateY = event.getRawY() - rotateImage.getHeight() / 2;
break;
case MotionEvent.ACTION_MOVE:
float angle = (float) Math.toDegrees(Math.atan2(event.getRawY() - rotateY, event.getRawX() - rotateX));
if (angle < 0){
angle += 360;
}
mBinding.getRoot().setRotation(angle);
}
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
请指教.
我想应用拖动,放大/缩小,使用多点触控旋转到两个图像.一个图像放在另一个的顶部.在应用这些行动之后
通过应用操作进行更改后,从上面的两个图像.
我成功应用缩放/拖动到顶部图像,从中创建新图像.
主要问题是
1.如何对两张图像应用动作,一次一张图像?
2.如何从当前显示的图像切换到另一个图像(我应该使用哪种布局)?
3.用户如何使用多点触控旋转或缩放图像?
我缺少什么,对不起列表 - :)