Android/独自スクロール
提供: 初心者エンジニアの簡易メモ
スクロールを最下に移動したときの処理サンプル
- src/ScrollTestActivity.java
public class ScrollTestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scroll_layout);
}
}
- res/layout/scroll_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.example.androidhelloworld.view.MyScrollView android:id="@+id/scrollview1" android:layout_width="wrap_content" android:layout_height="match_parent" /> </LinearLayout>
- src/view/MyScrollView.java
public class MyScrollView extends ScrollView {
private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;
private LinearLayout mLayout;
private Context mContext;
public MyScrollView(Context context) {
super(context);
mContext = context;
initView(context);
}
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
initView(context);
}
private void initView(Context context) {
mLayout = new LinearLayout(context);
mLayout.setOrientation(LinearLayout.VERTICAL);
for (int i = 1; i <= 10; i++) {
ImageView imageView = new ImageView(context);
imageView.setImageResource(R.drawable.ic_launcher);
mLayout.addView(imageView, new LinearLayout.LayoutParams(WC, WC));
}
addView(mLayout, new LinearLayout.LayoutParams(WC, WC));
}
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
super.onScrollChanged(x, y, oldx, oldy);
View content = getChildAt(0);
if (content == null) return;
// 最下検知
if (y + this.getHeight() >= content.getHeight()) {
// 処理
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(R.drawable.ic_launcher);
mLayout.addView(imageView, new LinearLayout.LayoutParams(WC, WC));
}
}
}
参考
http://qiita.com/haratchatta/items/86aa8517a91fea1e772f
http://developer.android.com/reference/android/widget/ScrollView.html
