viewpager无线轮播获取网络图片
首先创建小圆点
小圆点的两个属性一共两个属性另一个跟这个一个样,只不过颜色能让我们区分的
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="8dp" />
<solid android:color="#e2061c" />
</shape>
接着小圆点的布局是一下自己看吧
<?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">
<View
android:id="@+id/scrollView"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_margin="8dp"
android:background="@drawable/dots_normal"
/>
</LinearLayout>
下面是main.xml里面的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/ll"
android:layout_marginTop="450dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="20dp"/>
<Button
android:id="@+id/bt_tiao"
android:text="主页"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
//获取图片需要图片的包
Universal-Image-Loader
下面是代码
public class MyApp extends Application{
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);
ImageLoader.getInstance().init(configuration);
}
}
Universal-Image-Loader 导入包
添加权限
<uses-permission android:name="android.permission.INTERNET" />
android:name="MyApp"
下面是src中的代码
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.bwie.bean.SuperClass;
import com.bwie.utils.NetWorkUtils;
import com.bwie.utils.URLDB;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private Button bt;
private LinearLayout layout;
private List<SuperClass.NewslistBean> data;
private NetWorkUtils netWorkUtils = new NetWorkUtils();//实例化工具类
private List<ImageView>imgs = new ArrayList<ImageView>();//图片的集合
private List<View> dots = new ArrayList<View>(); //小圆点集合
private int i = 0;
private int dot = 0;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
viewPager.setCurrentItem(i);//得到传过来的值
dots.get(dot).setBackgroundResource(R.drawable.dots_normal);
dots.get(i%imgs.size()).setBackgroundResource(R.drawable.dots_focus);
dot=i%imgs.size();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//异步网络请求
new AsyncTask<String,Integer,String>(){
@Override
protected String doInBackground(String... params) {
String json = netWorkUtils.getJsonHttpConnetion(接口);
return json;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
--------通过添加gson包进行解析------
init();//初始化方法
}
}.execute();
}
//初始化方法
private void init() {
viewPager = (ViewPager) findViewById(R.id.viewPager);//获取组件
layout = (LinearLayout) findViewById(R.id.ll);
getImgs();//获取图片
getDots();//获取小圆点
//viewPager适配器
viewPager.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return Integer.MAX_VALUE;//最大值
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
int i = position % imgs.size();
ImageView imageView = imgs.get(i);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
});
//设置初始化位置
i = imgs.size()*10;
//得到位置
viewPager.setCurrentItem(i);
//设置第一个圆点为true
dots.get(0).setBackgroundResource(R.drawable.dots_focus);
//timer自动轮播
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
i = viewPager.getCurrentItem() + 1;//
handler.sendEmptyMessage(i);//发送数据
}
},1,2000);
}
//图片的方法
private void getImgs() {
for(int i = 0;i<data.size();i++){
String picUrl = data.get(i).getPicUrl();
ImageView img = new ImageView(this);
img.setScaleType(ImageView.ScaleType.FIT_XY);
ImageLoader.getInstance().displayImage(picUrl,img);
imgs.add(img);
}
}
//小圆点的方法
private void getDots() {
for(int i=0;i<imgs.size();i++){
View view = LayoutInflater.from(this).inflate(R.layout.dot_item,null);
View viewById = view.findViewById(R.id.scrollView);
dots.add(viewById);
layout.addView(view);
}
}
}
多多
支持
多多
点赞
- 顶
- 1
viewpager无线轮播获取网络图片的更多相关文章
- Android之自定义ViewPager实现图片的无线轮播
PS:以前也写过关于图片轮播这一块的博客.不过写的很烂,并且很多情况没有考虑到(没有支持无线轮播,和手势点击事件).因此这里写一篇补上.也是当时太年轻了. 注:图片请放大后再看.否则看不清楚. 学习内 ...
- URL转Drawable之 Android中获取网络图片的三种方法
转载自: http://doinone.iteye.com/blog/1074283 Android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Applicatio ...
- ViewPager自动轮播
Android使用ViewPager实现左右循环滑动及轮播效果 ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候 ...
- Android使用ViewPager做轮播
ViewPager.html div.oembedall-githubrepos { border: 1px solid #DDD; list-style-type: none; margin: 0 ...
- iOS 获取网络图片的大小
一直都在找关于获取网络图片的大小的方法, 今天找到了一个能解决的办法 ,如下 1, 导入框架 #import <ImageIO/ImageIO.h> 2. 使用此方法得到image的siz ...
- 分享一个安卓中异步获取网络图片并自适应大小的第三方程序(来自github)
安卓中获取网络图片,生成缓存 用安卓手机,因为手机流量的限制,所以我们在做应用时,要尽量为用户考虑,尽量少耗点用户的流量,而在应用中网络图片的显示无疑是消耗流量最大的,所以我们可以采取压缩图片或者将图 ...
- Android开发之ViewPager实现轮播图(轮播广告)效果的自定义View
最近开发中需要做一个类似京东首页那样的广告轮播效果,于是采用ViewPager自己自定义了一个轮播图效果的View. 主要原理就是利用定时任务器定时切换ViewPager的页面. 效果图如下: 主页面 ...
- 获取网络图片的大小 改变 图片色值 灰度什么的方法集合-b
直接上代码了 头文件 // 图片处理 0 半灰色 1 灰度 2 深棕色 3 反色 +(UIImage*)imageWithImage:(UIImage*)image grayLevelTy ...
- cocos2d-x C++ 获取网络图片缓存并展示
#ifndef __HttpGetImg__ #define __HttpGetImg__ #include "cocos2d.h" #include "HttpRequ ...
随机推荐
- hdu3303
分析:一个最暴力的想法是把加入到集合S的数据一个个按顺序保存起来,然后每次查询的时候由后向前计算余数,如果遇到余数为0的,就直接把时间输出,否则就一直比较到最后找余数最小时间最晚的,这样查询的时间复杂 ...
- The Pilots Brothers' refrigerator DFS+枚举
Description The game “The Pilots Brothers: following the stripy elephant” has a quest where a player ...
- [bzoj 1025][SCOI2009]游戏(DP)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1025 分析:首先这个问题等价于A1+A2+……Ak=n,求lcm(A1,A2,……,Ak)的种 ...
- 19、Java并发性和多线程-嵌套管程锁死
以下内容转自http://ifeve.com/nested-monitor-lockout/: 嵌套管程锁死类似于死锁, 下面是一个嵌套管程锁死的场景: 线程1获得A对象的锁. 线程1获得对象B的锁( ...
- Cocos2d-X中的菜单
在Cocos2d-X实现显示菜单的方式比較特殊,首先须要使用CCMenu创建一个菜单,然后使用CCMenuItem创建一个菜单项,实际上程序中显示的菜单是使用CCMenu和CCMenuItemFont ...
- Android开发:Eclipse中SqliteManager插件使用
通常开发Android的时候要使用到数据库操作,会遇到下面小问题: 数据库文件在哪?怎样訪问或操作? 能够通过:打开DDMS->File Explorer看到的sqlite数据库在eclipse ...
- IOS - 设置与帮助界面
设置与帮助 改动头像, 改动password, 移动客服, 帮助, 声明, 关于我们. 代码 // // IndexSetting600ViewController.h // SymptomCheck ...
- LeetCode 349. Intersection of Two Arrays (两个数组的相交)
Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...
- 云上kafka和自建kafka对比
说起Kafka,许多使用者对它是又爱又恨.Kafka是一种分布式的.基于发布/订阅的消息系统,其极致体验让人欲罢不能,但操心的运维.复杂的安全策略.可靠性易用性的缺失.算不上极致的性能发挥.并不丰富的 ...
- EF TMD
TMD 几个月前,本着学习的心态,首次在项目中应用EF.因为这里老是赶.赶.赶,当时只是匆匆而就,浅尝辄止,搞到现在对EF一知半解,每次在新项目使用,都担惊受怕,大费周折,不知道什么时候,在什么地方就 ...