gestos de aplicación en Android

En este artículo, vamos a poner en práctica gesto de vista de la imagen para cambiar el tamaño de la imagen con toque de un dedo en Android .

En el siguiente ejemplo, vamos a utilizar el View.ScaleGestureDetector class para hacer la escala de imagen. Este ScaleGestureDetector método (esto, nuevo ScaleListener ()) se class un objeto de ScaleGestureDetector class, que se almacena en la variable local. Otra cosa que vamos a necesitar es la matriz para obtener la coordinación del evento en la pantalla táctil. Esta matriz pasará a ser adjunto a la imagen más tarde.

Para implementar esto en su programa tendrá que class: android.view.MotionEvent , android.view.ScaleGestureDetector en su archivo de java. A continuación, cree un archivo de diseño con una sola ImageView como este.

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/image"
android:src="@drawable/includehelp"
android:scaleType="matrix"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:layout_alignParentEnd="true" />

Aquí, establecer el tipo de escala de la imagen igual a la “matriz” .

En primer lugar, vamos a tomar la referencia de la ImageView del archivo de diseño, a continuación, crear una nueva instancia de la ScaleGestureDecter return y almacenarlo en la variable local.

continuación, vamos a anular un oyente ScaleGestureDetector.SimpleOnScaleGestureListener . Esto va a escuchar class cada evento táctil.

1) Archivo de Java:

package com.example.hp.myapplication;
import android.graphics.Matrix;
import android.graphics.Typeface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity
{
ImageView image;
ScaleGestureDetector scale_g_detector;
Matrix m = new Matrix();
float s = 0.2f;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image=(ImageView)findViewById(R.id.image);
scale_g_detector = new ScaleGestureDetector(this,new ScaleListener());
}
public boolean onTouchEvent(MotionEvent me) {
scale_g_detector.onTouchEvent(me);
return true;
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener
{
@Override
public boolean onScale(ScaleGestureDetector d)
{
s *= d.getScaleFactor();
s = Math.max(0.2f, Math.min(s, 3.0f));
m.setScale(s, s);
image.setImageMatrix(m);
return true;
}
}
}

2) archivo XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout >:android="http://schemas.android.com/apk/res/android"
>:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.hp.myapplication.MainActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/image"
android:src="@drawable/includehelp"
android:scaleType="matrix"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:layout_alignParentEnd="true" />
</RelativeLayout>

3) El archivo de manifiesto:

<?xml version="1.0" encoding="utf-8"?>
<manifest >:android="http://schemas.android.com/apk/res/android"
package="com.example.hp.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

salida


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *