Android View水平滑动与分页加载方案

需求:实现自定义组合控件(imageView+TextView)水平滑动

实现:

1、使用Gallery,本省自带内存管理,不用考虑View太多导致内存泄露,为了让Gallery 实现无限循环滑动+初始化居中的问题,在Adapter中,getCount中返回 Integer的最大值。

2、但是,Gallery很不好控制,不是左边对齐

3、上网查资料,左边对齐了,NND,右边又没对齐,查资料,一直没解决

Google怪不得不推荐使用Gallery呢!

于是,换思路重来,使用 HorizonScrollView + LinearLayout 实现,而且可以精细控制,而且可以解决一个坑爹的问题:

比如:要一次性加载上百张图片,异步网络请求怎么搞?内存可能泄露?

所以,我可以实现精细的控制,分页加载,监听到HorizonScrollView 滑到最右边或者最左边的事件,滑动到最右边的时候,再次发网络请求,再次加载图片,

每次只加载固定个数的图片,形成缓冲池,类似于ListView下拉加载更多

private static void handleScreenShot(ArrayList<Screenshot> screenshots) {
		if (null == screenshots || screenshots.size() == 0) {
			return;
		}
		shotView.removeAllViews();
		for (Screenshot screenshot : screenshots) {
			View child = (View) LayoutInflater.from(mContext).inflate(R.layout.app_screenshots_item, null);
			LinearLayout.LayoutParams layout = new LinearLayout.LayoutParams(  
					LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);  
			layout.setMargins(15, 0, 0, 0);  
			child.setLayoutParams(layout);  
			shotView.addView(child);
			//			child.setTag(resourceInfo);
			//			child.setOnClickListener(this);
			ImageView imageView = (ImageView) child.findViewById(R.id.screenshot);
			AsyncImageTask task = new AsyncImageTask(imageView, Constants.HOST+screenshot.getUrl());
			task.setDefaultImage(R.drawable.loading);
			task.setFailImage(R.drawable.loading);
			TaskQueue.getInstance().addTask(task);
		}
	}

 <HorizontalScrollView
                        android:id="@+id/screenshots_hScrollview"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:layout_marginLeft="15dp"
                        android:layout_marginRight="5dp"
                        android:layout_marginTop="15dp"
                        android:scrollbarAlwaysDrawHorizontalTrack="false"
                        android:scrollbars="none" >

                        <LinearLayout
                            android:id="@+id/gallery_shot"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:orientation="horizontal" >
                        </LinearLayout>
                    </HorizontalScrollView>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值