分析了一下网上讲的滑动分页效果,我看用户体验不错,就模拟了一个如图

android 滑动分页

package com.my.activity;

import com.my.R;
import com.my.R.string;

import android.app.ListActivity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.AbsListView.OnScrollListener;

/**
*****滑动分页******
*实现原理: 通过手指的滑动,判断数据大小 然后动态改变数据,底部的加载是一个view

*
* @author owen
*@2010-8-17
*@上午09:29:07
*/

public class FenYeListActivity extends ListActivity implements OnScrollListener {
private static final String TAG = "**********FenYeListActivity.java*********";

private ItemAdapter adapter;
private int lastItem = 0;
private int mProgressStatus = 0;
private Handler mHandler = new Handler();
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

LinearLayout searchLayout = new LinearLayout(this);
//水平方向的线性布局
searchLayout.setOrientation(LinearLayout.HORIZONTAL);

//添加进展条
progressBar = new ProgressBar(this);
progressBar.setPadding(0, 0, 15, 0);
searchLayout.addView(progressBar, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));

//添加文字,设置文字垂直居中
TextView textView = new TextView(this);
textView.setText(R.string.app_loading);
textView.setGravity(Gravity.CENTER_VERTICAL);
searchLayout.addView(textView, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT));

//同时将进展条和加载文字显示在中间
searchLayout.setGravity(Gravity.CENTER);

LinearLayout loadingLayout = new LinearLayout(this);
loadingLayout.addView(searchLayout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));

loadingLayout.setGravity(Gravity.CENTER);
//加载到listActivity的底部
getListView().addFooterView(loadingLayout);

registerForContextMenu(getListView());

adapter = new ItemAdapter();
setListAdapter(adapter);
getListView().setOnScrollListener(this);
}

/**
* firstVisbleItem 第一个可见的item
* visibleItemCount 可见的Item个数
* totalItemCount 总的个数
* lastItem 可见状态中,最后一个item
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub

Log.i(TAG, "firstVisibleItem="+firstVisibleItem);
Log.i(TAG, "visibleItemCount="+visibleItemCount);
Log.i(TAG, "totalItemCount="+totalItemCount);

lastItem = firstVisibleItem + visibleItemCount - 1 ;
Log.i(TAG, "lastItem:" + lastItem);
}

/**
* 如果视图正在滚动,此方法将被调用之前,滚动下一帧呈现。特别是,它会被调用之前调用getView
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub

if(lastItem == adapter.count && scrollState == OnScrollListener.SCROLL_STATE_IDLE){
adapter.count += 10;
adapter.notifyDataSetChanged();
}
}

private class ItemAdapter extends BaseAdapter {

int count = 10;

@Override
public int getCount() {
// TODO Auto-generated method stub
return count;
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

TextView itemView = new TextView(FenYeListActivity.this);

itemView.setText("item " + position);
itemView.setHeight(90);

return itemView;
}

}

}

更多相关文章

  1. android paint设置字体 中文字体 楷体 和自动换行方法(zhuan)
  2. 在Android平台上加载本地库的危险性
  3. Android 绘制反色文字进度条
  4. android bitmap绘制文字自动换行
  5. Android实现加载等待展示
  6. android 按钮 背景 文字 自定义
  7. android Activity加载完成后的监听事件

随机推荐

  1. android之Layout(二)
  2. android shell 2
  3. Android(安卓)WebView如何加载assets下的
  4. [转]NDK中log输出方法
  5. Android细节问题总结(二)
  6. android编译系统的makefile文件Android.m
  7. Android(安卓)Gradle 基本模板
  8. android jpeg库的简单使用
  9. 【Android】Activity之间传递信息
  10. 配置android sd卡