【Android自定义控件】仿京东首页的京东快报,自动向上滚动的广告条

最近项目中要做这样滚动的广告条,git上搜了搜,还真搜到个。
效果图:

原理是用的一个只显示一条的listview,使用ListView的smoothScrollBy(int distance, int duration)方法,实现滚动。
 注意:通过smoothScrollBy方法滚动时,由于布局中的高度时dp,但这里面的第一个参数是sp,因此需要将dp转sp,转换完毕后的是float,但方法中是需要int,这样的话有可能导致小数位的丢失,自动滚动产生偏差,可以通过setSelection(int position)方法纠正位置,在smoothScrollBy方法调用后执行setSelection方法。

[代码]java代码:

if (position == -1) {
            scroll_Y = 0;
        } else {
            scroll_Y = mScrollY;
        }
        smoothScrollBy(scroll_Y, 2000);
        setSelection(position);
        position++;
至于广告栏的内容,可以自定义:参考item_layout.xml
数据的填充:

[代码]java代码:

viewHolder.mTitleView.setText(getTextTitle(data));
 viewHolder.mInfoView.setText(getTextInfo(data));
viewHolder.tv_price.setText(getTextPrice(data));
需要注意的是:

[代码]java代码:

/**
	 * 这里面的高度应该和你的xml里设置的高度一致
	 */
	@Override
	protected int getAdertisementHeight() {
		return 40;
	}

[代码]xml代码:

 <com.tianer.mayatu.view.ScrollUpAdvert.MainScrollUpAdvertisementView
                        android:id="@+id/main_advertisement_view"
                        android:layout_width="0dp"
                        android:layout_height="40dp"
                        android:layout_marginLeft="10dp"
                        android:layout_weight="2"></com.tianer.mayatu.view.ScrollUpAdvert.MainScrollUpAdvertisementView>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值