8:00 AM
16
Hey Gwener's, What's Up!
Jika berbicara tentang scroll tentu sobat sudah cukup familiar dengan istilah ini. Yakni sebuah metoda untuk menampilkan data pada ukuran tertentu namun berisi informasi yang banyak sehingga membutuhkan ruang yang lebih, hal ini bisa diatasi menggunakan scroll tersebut dengan cara menampilkannya secara sebagian dan berubah ketika discroll untuk melihat informasi selanjutnya.
Pada Android sendiri telah disediakan suatu scrollpane. Namun sayangnya scroll hanya fokus pada satu objek tertentu saja, namun bagaimana jika kita ingin membuat beberapa object yang menjadi satu kesatuan sehingga hanya akan bisa discroll jika terdapat beberapa object lain yang memiliki komponen yang serupa pula. Inilah yang disebut dengan istilah pagedscroll. Dengan menggabungkan beberapa objek menjadi satu kesatuan yang dianggap sebagai suatu objek tersendiri, sehingga ketika discroll objek tersebut tikak akan dipisah.
Paged Scrollpane

Apa itu PagedScroll

Seperti yang telah diungkap sebelumnya bahwa, pagedscroll merupakan metoda yang menggabungkan beberapa komponen menjadi satu kesatuan yang tidak dipisahkkan oleh scroll. Misalkan didalam objek terdiri dari sebuah rectangle yang berisi text seperti gambar diatas. Objek itu sebenarnya terdiri dari 2 bagian, jika menggunakan scrollpane biasa 2 objek tersebut akan dianggap berbeda satu sama lain. sehingga kita harus menyatukan kedua onbjek tersebut sehingga menjadi satu objek saja.

Membuat PagedScroll

Untuk menerapkan konsep diatas kita bisa menggunakan sebuah table untuk membuat beberapa objek menjadi satu kesatuan sehingga table-table tersebut akan dibedakan menjadi 1 objek yang berbeda satu sama lain terhadapa scrollpane. Pada LibGDX hal ini pun bisa diterapkan. Selengkapnya sobat bisa menggunakan kode berikut untuk mencobanya.

import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.utils.Array;
import com.esotericsoftware.tablelayout.Cell;
 
public class PagedScrollPane extends ScrollPane {
 
 private boolean wasPanDragFling = false;
 
 private Table content;
 
 public PagedScrollPane () {
  super(null);
  content = new Table();
  content.defaults().space(50);
  setWidget(content);
 }
 
 public PagedScrollPane (Skin skin) {
  super(null, skin);
  content = new Table();
  content.defaults().space(50);
  setWidget(content);
 }
 
 public PagedScrollPane (Skin skin, String styleName) {
  super(null, skin, styleName);
  content = new Table();
  content.defaults().space(50);
  setWidget(content);
 }
 
 public PagedScrollPane (Actor widget, ScrollPaneStyle style) {
  super(null, style);
  content = new Table();
  content.defaults().space(50);
  setWidget(content);
 }
 
 public void addPages (Actor... pages) {
  for (Actor page : pages) {
   content.add(page).expandY().fillY();
  }
 }
 
 public void addPage (Actor page) {
  content.add(page).expandY().fillY();
 }
 
 @Override
 public void act (float delta) {
  super.act(delta);
  if (wasPanDragFling && !isPanning() && !isDragging() && !isFlinging()) {
   wasPanDragFling = false;
   scrollToPage();
  } else {
   if (isPanning() || isDragging() || isFlinging()) {
    wasPanDragFling = true;
   }
  }
 }
 
 @Override
 public void setWidth (float width) {
  super.setWidth(width);
  if (content != null) {
   for (Cell cell : content.getCells()) {
    cell.width(width);
   }
   content.invalidate();
  }
 }
 
 public void setPageSpacing (float pageSpacing) {
  if (content != null) {
   content.defaults().space(pageSpacing);
   for (Cell cell : content.getCells()) {
    cell.space(pageSpacing);
   }
   content.invalidate();
  }
 }
 
 private void scrollToPage () {
  final float width = getWidth();
  final float scrollX = getScrollX();
  final float maxX = getMaxX();
 
  if (scrollX >= maxX || scrollX <= 0) return;
 
  Array pages = content.getChildren();
  float pageX = 0;
  float pageWidth = 0;
  if (pages.size > 0) {
   for (Actor a : pages) {
    pageX = a.getX();
    pageWidth = a.getWidth();
    if (scrollX < (pageX + pageWidth * 0.5)) {
     break;
    }
   }
   setScrollX(MathUtils.clamp(pageX - (width - pageWidth) / 2, 0, maxX));
  }
 }
 
 
}
Pada contoh ini kita akan membuat sebuah objek untuk suatu halaman dan dapat discroll ke kanan atau secara horizontal saja. Sobat bisa memanipulasinya pada fungsi addPage. Jika ingin membuat scroll secara verticall maka sobat harus membuat row baru setiap page ditambahkan pada scrollpane ini. Begitu seterusnya

Demikian cara ini semoga bermanfaat dan bisa diterapkan, untuk informasi tambahan bisa sobat membaca Cara mendapatkan KeyHash untuk aplikasi android

16 comments:

  1. Fungsinya hampir sama dengan scroll pada browser ini

    ReplyDelete
  2. مع شركة اركان المملكه للتنظيف,ومكافحه الحشرات,وكشف التسربات,وتسليك المجارى,ونقل العفش,وتنظيف البيوت انت
    تتعامل مع افضل شركة بالمملكه ككل لانها تتعامل باقل الاسعار المتاحه فى مجال العمل
    ونحن نوفر لك كل ما هو جديد وبخصم 30%فى مجال الحساب اذا معنا انت فى كل امان ممكن
    اتصل بشركة اركان المملكه لانها الافضل دائما فى كل المجالات
    تمتلك الشركة كل وسائل التوصيل والنقل 24 ساعه
    :::::::::::::::::::::::::::::::::::::
    شركة كشف تسربات المياه بجازان

    شركة كشف تسربات المياه بخميس مشيط

    شركة كشف تسربات المياه بابها

    شركة كشف تسربات المياه بالدمام

    شركة كشف تسربات المياه بالرياض

    شركة نقل اثاث بجازان

    شركة تسليك مجارى بالدمام

    شركة تسليك مجارى بخميس مشيط

    شركة تسليك مجارى بجازان

    شركة تسليك مجارى بنجران

    شركة مكافحه حشرات بخميس مشيط

    شركة تسليك مجارى بابها

    شركة نقل عفش بالرياض

    شركة نقل عفش بخميس مشيط

    هكذا شركة اركان المملكه تقدم الخدمه الممتازه التى بدونها لا تستطيعوا العمل الجاد
    اننا نتعامل بالافضليه الكامله لاننا نتعامل بكل الاسعار البسيطه والممكنه
    تحت شعار الراحه الكامله والاداء المتميز والخدمه طول اليوم
    معنا انت فى كل امان اتصل نصلك اينما كنت

    ReplyDelete
  3. لا داعى للقلق وانت تتعامل مع شركة اركان المملكه للتنظيف والمكافحه والتسليك
    وغير ذالك من كافه انواع التنظيف فى المملكه السعوديه باكملها اذا
    كل ما عليكم هو زياره صفحتنا للتطلع على اقل الاسعار المتاحه
    والتى تفى احتياجاتكم الخاصه
    شركة مكافحة حشرات بالدمام

    شركة مكافحة حشرات بابها

    شركة رش مبيدات بجازان

    شركة مكافحه حشرات بالاحساء

    شركة رش مبيدات بالرياض

    شركة اركان المملكه

    شركة تنظيف بابها

    شركة تنظيف فلل بابها

    شركة تنظيف بالدمام

    شركة تنظيف منازل بالرياض

    شركة تنظيف منازل بابها

    شركة تنظيف منازل بخميس مشيط

    شركة تنظيف شقق بالدمام

    شركة تنظيف بالطائف

    شركة تنظيف بالاحساء
    الشركة الاولى والكبيره والتى لها تاريخ كبير فى كل المجالات مع شركة اركان المملكه تعامل معنا تصل الى بر المان
    معنا تجد كل العروض والمميزات التى لا تجدوها مع احد
    اذا شركة اركان المملكه هى من اعرق الشركات فى كافه المجالات والخدمات اذا نحن نتعامل فى كل ما هو تنظيف ومكافحه وكشف تسربات
    اتصلوا نصلكم اينما كنتم فى كل وقت وكل مكان

    ReplyDelete
  4. just information we only provide information for those who need it cara menggugurkan kandungan dengan cepat dan akurat

    ReplyDelete
  5. Beberapa tips cara menggugurkan hamil untuk anda dengan menggunakan obat penggugur kandungan cytotec , terbukti dengan cepat untuk cara mencegah kehamilan . Maka dari itu pilihlah obat aborsi sangat ampuh . Jika anda telah haid obat telat datang bulan juga manjur , kami jual obat aborsi ini secara online . http://readthedocs.org/projects/cara-menggugurkan-hamil/

    ReplyDelete