求助 viewpager实现广告轮播效果,图片从服务器上获取

boatwater 应用层 2015-08-19 02:38:56
从服务器上获取到图片的url 进行轮播效果用的自定义的MyImgScroll(从网上看的)

MyImgScroll myPager; // 图片容器
LinearLayout ovalLayout; // 圆点容器
private List<View> listViews; // 图片组
private List<String> listUrl;

Handler handler = new Handler() {
public void handleMessage(Message msg) {
String data = (String) msg.obj;
listUrl = AdvertJson.readAdcert(data);
InitViewPager();// 初始化图片
// 开始滚动
myPager.start(MainActivity.this, listViews, 4000, ovalLayout,
R.layout.ad_bottom_item, R.id.ad_item_v,
R.drawable.dot_focused, R.drawable.dot_normal);
};
};

/**
* 初始化图片
*/
private void InitViewPager() {
listViews = new ArrayList<View>();
for (int i = 0; i < listUrl.size(); i++) {
String url = listUrl.get(i);
ImageView imageView = new ImageView(this);
BitmapUtils bitmapUtils = new BitmapUtils(this);
bitmapUtils.display(imageView, url);
imageView.setScaleType(ScaleType.CENTER_CROP);
listViews.add(imageView);
}
}

把操作方handler里面进行不了 ,不放handler里面listUrl又是空的。




...全文
661 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
KiligCY 2016-06-24
  • 打赏
  • 举报
回复
楼主 你好,请问你这个问题是怎么解决的啊 求代码 524067307@qq.com 给我发一份吧 好人
  • 打赏
  • 举报
回复
引用 14 楼 boatwater 的回复:
主要是 handler里面的值怎么在外面获取到呢。
外面为什么要获取Handler的值呢?Handler不是做刷新UI操作的吗
boatwater 应用层 2015-08-20
  • 打赏
  • 举报
回复
引用 15 楼 u012301841 的回复:
[quote=引用 14 楼 boatwater 的回复:] 主要是 handler里面的值怎么在外面获取到呢。
外面为什么要获取Handler的值呢?Handler不是做刷新UI操作的吗[/quote] 操作放handler里面运行不起来额
boatwater 应用层 2015-08-20
  • 打赏
  • 举报
回复
主要是 handler里面的值怎么在外面获取到呢。
哎,真难 2015-08-20
  • 打赏
  • 举报
回复
引用 12 楼 boatwater 的回复:
[quote=引用 11 楼 heaimnmn 的回复:] [quote=引用 9 楼 boatwater 的回复:] [quote=引用 8 楼 heaimnmn 的回复:] 那个start方法是什么?
那个是自定义类MyPager 里面轮播的方法。[/quote]那何必放在handler里面了?listUrl 和他有关联?[/quote] listUrl 通过 handler传过来的 listUrl = AdvertJson.readAdcert(data);//这个是json的解析,里面获得的图片地址就存放进了list里面;通过handler传出来[/quote]首先感觉实例化的时候应该在oncreate里面。handler只是传值,你debug看下onstart方法怎么走
  • 打赏
  • 举报
回复
引用 16 楼 boatwater 的回复:
[quote=引用 15 楼 u012301841 的回复:] [quote=引用 14 楼 boatwater 的回复:] 主要是 handler里面的值怎么在外面获取到呢。
外面为什么要获取Handler的值呢?Handler不是做刷新UI操作的吗[/quote] 操作放handler里面运行不起来额[/quote] 如果在Handler里更新自定义控件的话,试一试调用下自定义控件的重绘方法
boatwater 应用层 2015-08-19
  • 打赏
  • 举报
回复
引用 11 楼 heaimnmn 的回复:
[quote=引用 9 楼 boatwater 的回复:] [quote=引用 8 楼 heaimnmn 的回复:] 那个start方法是什么?
那个是自定义类MyPager 里面轮播的方法。[/quote]那何必放在handler里面了?listUrl 和他有关联?[/quote] listUrl 通过 handler传过来的 listUrl = AdvertJson.readAdcert(data);//这个是json的解析,里面获得的图片地址就存放进了list里面;通过handler传出来
哎,真难 2015-08-19
  • 打赏
  • 举报
回复
引用 9 楼 boatwater 的回复:
[quote=引用 8 楼 heaimnmn 的回复:] 那个start方法是什么?
那个是自定义类MyPager 里面轮播的方法。[/quote]那何必放在handler里面了?listUrl 和他有关联?
我不是很帅 2015-08-19
  • 打赏
  • 举报
回复
给你个demo http://download.csdn.net/detail/qq_16602755/9025115
boatwater 应用层 2015-08-19
  • 打赏
  • 举报
回复
引用 8 楼 heaimnmn 的回复:
那个start方法是什么?
那个是自定义类MyPager 里面轮播的方法。
哎,真难 2015-08-19
  • 打赏
  • 举报
回复
那个start方法是什么?
boatwater 应用层 2015-08-19
  • 打赏
  • 举报
回复
引用 6 楼 zxb3121999 的回复:
就代码来看 没问题,有报出什么错没?
没报错。 就是图片显示不出来
zxb3121999 2015-08-19
  • 打赏
  • 举报
回复
就代码来看 没问题,有报出什么错没?
boatwater 应用层 2015-08-19
  • 打赏
  • 举报
回复
引用 4 楼 zxb3121999 的回复:
不知道是不是因为你for循环建立的imageview没有设置宽高度原因,其它地方应该没出错的
我用本地的图片试过 ,可以运行。 把 myPager.start 这个 操作放进handler里面就不行了 方法: /** * 开始广告滚动 * * @param mainActivity * 显示广告的主界面 * @param imgList * 图片列表, 不能为null ,最少一张 * @param scrollTime * 滚动间隔 ,0为不滚动 * @param ovalLayout * 圆点容器,可为空,LinearLayout类型 * @param ovalLayoutId * ovalLayout为空时 写0, 圆点layout XMl * @param ovalLayoutItemId * ovalLayout为空时 写0,圆点layout XMl 圆点XMl下View ID * @param focusedId * ovalLayout为空时 写0, 圆点layout XMl 选中时的动画 * @param normalId * ovalLayout为空时 写0, 圆点layout XMl 正常时背景 */ public void start(Activity mainActivity, List<View> imgList, int scrollTime, LinearLayout ovalLayout, int ovalLayoutId, int ovalLayoutItemId, int focusedId, int normalId) { mActivity = mainActivity; mListViews = imgList; mScrollTime = scrollTime; // 设置圆点 setOvalLayout(ovalLayout, ovalLayoutId, ovalLayoutItemId, focusedId, normalId); this.setAdapter(new MyPagerAdapter());// 设置适配器 if (scrollTime != 0 && imgList.size() > 1) { // 设置滑动动画时间 ,如果用默认动画时间可不用 ,反射技术实现 new FixedSpeedScroller(mActivity).setDuration(this, 700); startTimer(); // 触摸时停止滚动 this.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { startTimer(); } else { stopTimer(); } return false; } }); } if (mListViews.size() > 1) { this.setCurrentItem((Integer.MAX_VALUE / 2) - (Integer.MAX_VALUE / 2) % mListViews.size());// 设置选中为中间/图片为和第0张一样 } }
zxb3121999 2015-08-19
  • 打赏
  • 举报
回复
不知道是不是因为你for循环建立的imageview没有设置宽高度原因,其它地方应该没出错的
boatwater 应用层 2015-08-19
  • 打赏
  • 举报
回复
引用 2 楼 zxb3121999 的回复:
你是指哪个操作放handler不行?初始化图片么?
这个放进handler里面执行不了 // 开始滚动 myPager.start(MainActivity.this, listViews, 4000, ovalLayout, R.layout.ad_bottom_item, R.id.ad_item_v, R.drawable.dot_focused, R.drawable.dot_normal); listViews 是 图片组 通过handler传过来的 ,如果不放handler里操作listViews就是空的。
zxb3121999 2015-08-19
  • 打赏
  • 举报
回复
你是指哪个操作放handler不行?初始化图片么?
boatwater 应用层 2015-08-19
  • 打赏
  • 举报
回复
如果是本地的图片放handler里面也不行,只能方外面。

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧