Kamis, 18 April 2013

[android] Scroll horizontal dan vertical

Hi, hari ini mau tulis scroll horizontal dan vertical di android. Lansung aja ke code ya. Pertama - tama kita buat dulu custom scroll untuk yang vertical (VScroll.java) dan horizontal (HScroll.java).

package ardi.fisika6.util;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.HorizontalScrollView;


public class HScroll extends HorizontalScrollView {
    public HScroll(Context context, AttributeSet attrs, int defStyle) {
         
super(context, attrs, defStyle);
    }

    public HScroll(Context context, AttributeSet attrs) {
         
super(context, attrs);
    }

    public HScroll(Context context) {
         
super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return false;
    }
}

package ardi.fisika6.util;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;

public class VScroll 
extends ScrollView {

    public VScroll(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public VScroll(Context context, AttributeSet attrs) {
         
super(context, attrs);
    }

    public VScroll(Context context) {
         
super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return false;
    }
}

Oh iya penamaan package disesuaikan yang ada di project kalian ya. Setelah itu kita masukan kode itu di layout xml. Seperti dibawah ini


(tbl_bsrn_pk.xml)
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/id_TblBsrnPk"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

<ardi.fisika6.util.VScroll android:layout_height=
"fill_parent"
         
android:layout_height="fill_parent" android:id="@+id/vScroll">
        <ardi.fisika6.util.HScroll android:id="@+id/hScroll"
             
android:layout_width="fill_parent" android:layout_height="fill_parent">
         
    <TableLayout 
android:id="@+id/tbl_bsrn_pk" android:layout_height="match_parent" ........
................

Pada layout di atas, gw ga cantumin ya semua kode layout di atas. Bisa dilihat kalau kita menggunakan VScroll dan HScroll dari turuan class ScrollView, sebagai container dari layout TableLayout. Lalu kemudian kita panggil layout diatas, Lalu pada fungsi mainnya, jangan lupa kita pake onTouchEvent. Bisa lihat diatas dibawah ini



package ardi.fisika6.kelas7;

import android.app.Activity;
import android.os.Bundle;import android.view.MotionEvent;import android.widget.HorizontalScrollView;import android.widget.ScrollView;import ardi.fisika6.R;

public class TblBesaranPokok extends Activity {

private float mx, my;
 
private ScrollView vScroll;
        private HorizontalScrollView hScroll;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tbl_bsrn_pk);
vScroll = (ScrollView) findViewById(R.id.vScroll);
                hScroll = (HorizontalScrollView) findViewById(R.id.hScroll);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
float curX, curY;

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mx = event.getX();
my = event.getY();
break;
case MotionEvent.ACTION_MOVE:
                            curX = event.getX();
                            curY = event.getY();
                            vScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                            hScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                            mx = curX;
                            my = curY;
                  break;
case MotionEvent.ACTION_UP:
                           curX = event.getX();
                           curY = event.getY();
                           vScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                           hScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                   break;
}

return true;
}

}



Yang paling penting di atas adalah fungsi onTouchEvent, kalau gak paham copy aja :senyum. Kalau fungsi onCreate di atas itu disesuain sama project kalian. Sekian dari saya, insyaallah gak error :senyum. Kalau kurang jelas bisa lihat di link ini.
Wassalam.

0 komentar:

Posting Komentar