Menggeser objek dengan menyentuh - Android

Menggeser objek dengan menyentuh

Kita dapat dengan mudah memindahkan objek atau tampilan apapun di layar seperti, ImageView, Button, TextView, dll dengan fungsi sentuh. Dalam tutorial ini, kita akan menambahkan ImageView ke tata letak aktivitas kita dan membuat ImageView itu berpindah pindah saat di klik bersama dengan usapan.

Tambahkan ImageView atau apa saja pada activity_main.xml, di sini saya menggunakan ImageView sebagai objek yang akan kita mainkan, lihat di bawah.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:tools="http://schemas.android.com/tools"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:orientation="vertical"
	android:gravity="center"
	android:background="#FFFFFFFF"
	tools:context=".MainActivity"
	android:id="@+id/activity_mainLinearLayout">
<ImageView
	android:id="@+id/image"
	android:layout_height="50dp"
	android:layout_width="50dp"
	android:gravity="center"
	android:src="@drawable/ic_launcher"/>
</LinearLayout>

Kita hanya membutuhkan gerakan pada sumbu y dan mendeteksi jika digerakkan ke atas atau ke bawah. Ini dilakukan dengan menjiwai tampilan saat disentuh. Bagi saya kodenya relatif sederhana, coba lihat pada contoh MainActivity.java di bawah ini.


package com.happycodx.apps;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.view.View;
import android.view.MotionEvent; 
public class MainActivity extends AppCompatActivity { 
	ImageView imageView;
	float xDown = 0;
	float yDown = 0;
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
		imageView = (ImageView) findViewById(R.id.image);
		imageView.setOnTouchListener(new View.OnTouchListener() {
				@Override
				public boolean onTouch(View v, MotionEvent event) {
					switch (event.getActionMasked()) {
						case MotionEvent.ACTION_DOWN:
							xDown = event.getX();
							yDown = event.getY();
							break;
						case MotionEvent.ACTION_MOVE:
							float moveX,moveY;
							moveX = event.getX();
							moveY = event.getY();

							float distanceX = moveX -xDown;
							float distanceY  = moveY -yDown;
							imageView.setX(imageView.getX()+distanceX);
							imageView.setY(imageView.getY()+distanceY);
							break;
					}
					return true;
				}
			});
		}
}  
Baca Juga
Posting Komentar (0)
Lebih baru Lebih lama