Je sais comment développer l'activité de l'onglet en utilisant la mise en page XML et aussi je sais comment faire radiomessagerie android comme on le voit dans l'application Android MarketMettre en œuvre Pagination sur l'onglet mise en page
mais je ne reçois pas comment fusionner cette pagination concept de l'activité de l'onglet et comment créer tabactivity à partir du code java:
voir le code ci-dessous j'utiliser pour la pagination en utilisant la mise en page linéaire:
sample.java
public class Sample extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// creates the Pagination Layout
PaginationLayout paginationLayout = new PaginationLayout(this);
paginationLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
// creates content only for sample
TableLayout table = new TableLayout(this);
table.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
table.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
TableRow row = new TableRow(this);
row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
table.addView(row);
TableRow row2 = new TableRow(this);
row2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
table.addView(row2);
for(int i = 0; i< 50;i++){
Button button = new Button(this);
button.setText("Button " + i);
if (i%2==0) {
row.addView(button);
} else {
row2.addView(button);
}
}
// add the content in pagination
paginationLayout.addView(table);
// set pagination layout
setContentView(paginationLayout);
}
}
et le code pour la mise en pagination:
public class PaginationLayout extends LinearLayout {
private int mPageActive = 0;
private HorizontalScrollView mScroll;
private LinearLayout mBar;
public PaginationLayout(Context context) {
super(context);
setOrientation(LinearLayout.VERTICAL);
// creates the class that will control the gestures and apply it in the
// scroll
final GestureDetector mGestureDetector = new GestureDetector(new MySimpleOnGestureListener());
mScroll = new HorizontalScrollView(context);
mScroll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
mScroll.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (mGestureDetector.onTouchEvent(event)) {
return true;
} else {
return false;
}
}
});
// creates Previous and Next buttons
Button btnPrevious = new Button(getContext());
btnPrevious.setLayoutParams(new LayoutParams(150, LayoutParams.FILL_PARENT));
btnPrevious.setText("Previous");
btnPrevious.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
previous();
}
});
Button btnMid = new Button(getContext());
btnMid.setLayoutParams(new LayoutParams(150, LayoutParams.FILL_PARENT));
btnMid.setText("Mid");
btnMid.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
next();
}
});
Button btnNext = new Button(getContext());
btnNext.setLayoutParams(new LayoutParams(150, LayoutParams.FILL_PARENT));
btnNext.setText("Next");
btnNext.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
next();
}
});
// bar that include the buttons
mBar = new LinearLayout(getContext());
mBar.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
mBar.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
mBar.setBackgroundColor(Color.GRAY);
mBar.addView(btnPrevious);
mBar.addView(btnNext);
//mBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.android_1080p));
mBar.setVisibility(LinearLayout.INVISIBLE);
// add bar and scroll in the super (LinearLayout)
super.addView(mBar);
super.addView(mScroll);
}
/**
* All that the user include is added in the scroll
*/
@Override
public void addView(View child) {
mScroll.addView(child);
}
/**
* Controls if the top bar should appear or not
*/
@Override
protected void onSizeChanged(int arg0, int arg1, int arg2, int arg3) {
super.onSizeChanged(arg0, arg1, arg2, arg3);
View chield = mScroll.getChildAt(0);
if (chield != null) {
if (chield.getMeasuredWidth() > getWidth()) {
mBar.setVisibility(LinearLayout.VISIBLE);
} else {
mBar.setVisibility(LinearLayout.INVISIBLE);
}
}
}
/**
* does the effect "back a page"
*/
public void previous() {
mPageActive = (mPageActive > 0) ? mPageActive - 1 : 0;
mScroll.smoothScrollTo(mPageActive * mScroll.getWidth(), 0);
}
/**
* does the effect "forward a page"
*/
public void next() {
int pageWidth = mScroll.getWidth();
int nextPage = (mPageActive + 1) * pageWidth;
if (nextPage - mScroll.getScrollX() <= pageWidth) {
mScroll.smoothScrollTo(nextPage, 0);
mPageActive++;
} else {
mScroll.smoothScrollTo(mScroll.getScrollX(), 0);
}
}
/**
* Private class that controls the gestures, forward or back a page.
*/
private class MySimpleOnGestureListener extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (e1 != null && e2 != null) {
if (e1.getX() - e2.getX() > 0) {
// forward...
next();
return true;
} else if (e2.getX() - e1.getX() > 0) {
// back...
previous();
return true;
}
}
return false;
}
}
}
Merci pour la réponse na pas angie..i trouvé une solution pour cela, je vais essayer votre code et dira si je suis en mesure de le faire maintenant ou non – Shruti
pouvez-vous s'il vous plaît fournir un lien vers le code source ?? – Shruti
j'ai testé celui-ci http://thepseudocoder.wordpress.com/2011/10/13/android-tabs-viewpager-swipe-able-tabs-ftw/ cela a fonctionné pour moi, j'espère que c'est ce que vous voulez – Angie