AndroidImageSlider第一张图闪过的问题解决
1. AndroidImageSlider的使用:
参考源码:https://github.com/daimajia/AndroidImageSlider
当然网上介绍使用方法的很多,搜一搜。
2. 遇到的第一张闪过问题解决(其实我在想直接换一个其他的使用不久得了,但还是先解决了,再换)
* 导致这种问题的原因:(原因可能不是很详细,直接跳过看解决就好)
在布局中使用SliderLayout,这样在数据未加载完成时,已经创建了对象。经过一番排查发现问题实在这里:
public SliderLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mContext = context;
LayoutInflater.from(context).inflate(R.layout.slider_layout, this, true);
final TypedArray attributes = context.getTheme().obtainStyledAttributes(attrs,R.styleable.SliderLayout,
defStyle,0);
mTransformerSpan = attributes.getInteger(R.styleable.SliderLayout_pager_animation_span, 1100);
mTransformerId = attributes.getInt(R.styleable.SliderLayout_pager_animation, Transformer.Default.ordinal());
mAutoCycle = attributes.getBoolean(R.styleable.SliderLayout_auto_cycle,true);
int visibility = attributes.getInt(R.styleable.SliderLayout_indicator_visibility,0);
for(PagerIndicator.IndicatorVisibility v: PagerIndicator.IndicatorVisibility.values()){
if(v.ordinal() == visibility){
mIndicatorVisibility = v;
break;
}
}
mSliderAdapter = new SliderAdapter(mContext);
PagerAdapter wrappedAdapter = new InfinitePagerAdapter(mSliderAdapter);
mViewPager = (InfiniteViewPager)findViewById(R.id.daimajia_slider_viewpager);
mViewPager.setAdapter(wrappedAdapter);
mViewPager.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_UP:
recoverCycle();
break;
}
return false;
}
});
attributes.recycle();
setPresetIndicator(PresetIndicators.Center_Bottom);
setPresetTransformer(mTransformerId);
setSliderTransformDuration(mTransformerSpan,null);
setIndicatorVisibility(mIndicatorVisibility);
if(mAutoCycle){
startAutoCycle();
}
}
创建了对象,就已经设置了Adapter,网络加载数据,导致时间延迟,加载完成,再设置Adapter时,会引发 ViewPagerEx 中的一个 PagerObserver 中的 onChanged() 方法引起的,具体是可以去看一下源码。了解了如何造成的,然并卵。直接 compile 进来的,你改不了源码。只能退而求其次。
* 解决方法:
我在加载完数据时再创建SliderLayout对象,进行数据填充,问题就解决了。这样就需要动态创建对象,并添加在相应的位置。之前那个位置,就可以用一个容器来代替。看代码:
private void initSliderLayout(List<PromotionsBean> promotionList) {
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
sliderLayout = new SliderLayout(getContext());
sliderLayout.setLayoutParams(params);
sliderLayout.requestLayout();
for (int i = 0; i < promotionList.size(); i++) {
final PromotionsBean promotionsBean = promotionList.get(i);
DefaultSliderView textSliderView = new DefaultSliderView(getContext());
// textSliderView.description(item.getInfo());//标题
textSliderView.image(promotionsBean.getImage());//加载图片
textSliderView.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() {
@Override
public void onSliderClick(BaseSliderView slider) {
Intent intent = new Intent(getContext(), WRTWebActivity.class);
intent.setAction(promotionsBean.getLink());
startActivity(intent);
}
});
sliderLayout.addSlider(textSliderView);
}
bannerRoot.addView(sliderLayout, 0); //bannerRoot 为容器
sliderLayout.startAutoCycle(4000, 4000, true);
}
AndroidImageSlider第一张图闪过的问题解决的更多相关文章
- PHP提取页面第一张图为缩略图的代码
<?php $p = '/<img.*?src=[\'|\"](.+?)[\'|\"].*?>/i'; preg_match_all($p,$str,$match ...
- 通过三张图了解Redux中的重要概念
上周利用业余的时间看了看Redux,刚开始有点不适应,一下在有了Action.Reducer.Store和Middleware这么多新的概念. 经过一些了解之后,发现Redux的单向数据里的模式还是比 ...
- 三张图让你高速明确activity与fragment生命周期的异同点
第一张图:activity的生命周期 第二张图:fragment的生命周期 第三张图:activity与fragment生命周期对照 补充:假设你还是不明确,请翻译一下你不理解的相应单词. ----- ...
- 用两张图告诉你,为什么你的App会卡顿?
有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? 知道Android究竟是如何在屏幕上显示我们期望的画面的? 对Android的视图架构有整体把握. 学会 ...
- jquery手写焦点轮播图-------解决最后一张无缝跳转第一张的问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 2.5w字 + 36 张图爆肝操作系统面试题,太牛逼了!
欢迎各位大佬访问我的 github ,跪求 star bestJavaer 大家好,我是 cxuan,我之前汇总了一下关于操作系统的面试题,最近又重新翻阅了一下发现不是很全,现在也到了面试季了,所以我 ...
- 为了拿捏 Redis 数据结构,我画了 40 张图(完整版)
大家好,我是小林. Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. ...
- 40张图+万字,从9个数据类型帮你稳稳的拿捏Redis数据结构
摘要:本文把Redis新旧版本的数据结构说图解一遍,共有 9 种数据结构:SDS.双向链表.压缩列表.哈希表.跳表.整数集合.quicklist.listpack. 本文分享自华为云社区<为了拿 ...
- 深入理解javascript作用域系列第五篇——一张图理解执行环境和作用域
× 目录 [1]图示 [2]概念 [3]说明[4]总结 前面的话 对于执行环境(execution context)和作用域(scope)并不容易区分,甚至很多人认为它们就是一回事,只是高程和犀牛书关 ...
随机推荐
- K8S学习笔记之Flannel解读
0x00 概述 我们知道docker官方并没有提供多主机的容器通信方案,单机网络的模式主要有host,container,brige,none.none这种模式,顾名思义就是docker本身不去管理网 ...
- MVC HTML页面使用
解决HTML <system.webServer> <validation validateIntegratedModeConfiguration="false" ...
- 问题:grid卸载后重新安装时ASM磁盘识别不到了
现象,磁盘路径是对的,但是识别不出来asmdisk2 系统显示磁盘也存在 识别不到的原因是:安装了一次磁盘已经有asm信息写入,需要擦除才能重新被识别到,命令如下 [root@swnode1 dev] ...
- svg动态添加小人
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- (3网络化部署)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署
我们使用google提供的colab,对我们现有的GoNetwork进行适当修改,利用网络资源进行运算. 一.什么是 Colaboratory? Colaboratory 是一款研究工具,用于进行机器 ...
- c++中ifstream一次读取整个文件
转载:http://www.cnblogs.com/kex1n/p/4028428.html 第一种方法: 读取至std::string的情况: #include <string> #in ...
- Flask学习【第5篇】:用Falsk实现的分页
Flask实现的分页组件 from urllib.parse import urlencode,quote,unquote class Pagination(object): "" ...
- Android系统分区理解及分区目录细解【转】
本文转载自:https://blog.csdn.net/u010001503/article/details/51853822 Android 通常有以下分区: System分区: 就是我们刷ROM的 ...
- Linux rsync 命令学习
Rsync命令和cp命令很像,但是功能似乎更加复杂点,主要用来备份数据.看了网上一堆介绍的文章,感觉不是很通俗易懂.下面按照我的理解,做一些笔记: 同步方式 之前接触过一些同步软件,例如坚果云.百度云 ...
- LightOJ 1027 A Dangerous Maze(期望)题解
题意:n扇门,每扇门后都有一个值x,如果x<0会让你等待-x再重新回到这里选择门,x>0你经过x时间就会被传送走,问你被传送走的期望 思路:假设被传送走的期望为E,那么对于x<0来说 ...