网络请求 异步加载 图片框架+ Viewpager+Hanlder

public class MyTask extends AsyncTask<String,Void,String> {

    //申请一个接口类对象
    private  Icallbacks icallbacks;

    //将无参构造设置成私有的,使之在外部不能够调用
    private MyTask(){}

    //定义有参构造方法
    public MyTask(Icallbacks icallbacks) {
        this.icallbacks = icallbacks;
    }

    @Override
    protected String doInBackground(String... params) {
        String str="";

        try {
            //使用HttpUrlConnection
            URL url=new URL(params[0]);
            HttpURLConnection connection=(HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setReadTimeout(5000);
            connection.setConnectTimeout(5000);

            if(connection.getResponseCode()==200){
                InputStream inputStream=connection.getInputStream();
                //调用工具类中的静态方法
                str=StreamToString.streamToStr(inputStream,"utf-8");
            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }


        return str;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        //解析,封装到bean,更新ui组件
        icallbacks.updateUiByjson(s);



    }
    //定义一个接口
    public interface Icallbacks{
        /**
         * 根据回传的json字符串,解析并更新页面组件
         * @param jsonstr
         */
        void updateUiByjson(String jsonstr);
    }
}
///
 
public class StreamToString {
    public static String streamToStr(InputStream inputStream, String chartSet){

        StringBuilder builder=new StringBuilder();
        try {
            BufferedReader br=new BufferedReader(new InputStreamReader(inputStream,chartSet));
            String con;
            while ((con=br.readLine())!=null){
                builder.append(con);
            }

            br.close();
            return builder.toString();


        } catch (Exception e) {
            e.printStackTrace();
        }


        return "";
    }
}
//
 
 
public class ImageloaderUtil {


    public static void initConfig(Context context) {
        //配置
//        File cacheFile=context.getExternalCacheDir();
        File cacheFile= new File(Environment.getExternalStorageDirectory()+"/"+"image");

        ImageLoaderConfiguration config=new ImageLoaderConfiguration.Builder(context)
                .memoryCacheExtraOptions(480, 800)//缓存图片最大的长和宽
                .threadPoolSize(2)//线程池的数量
                .threadPriority(4)
                .memoryCacheSize(2*1024*1024)//设置内存缓存区大小
                .diskCacheSize(20*1024*1024)//设置sd卡缓存区大小
                .diskCache(new UnlimitedDiscCache(cacheFile))//自定义缓存目录
                .writeDebugLogs()//打印日志内容
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理
                .build();

        ImageLoader.getInstance().init(config);

    }

    /**
     * 获取图片设置类
     * @return
     */
    public static DisplayImageOptions getImageOptions(){

        DisplayImageOptions optionsoptions=new DisplayImageOptions.Builder()
                .cacheInMemory(true)//使用内存缓存
                .cacheOnDisk(true)//使用磁盘缓存
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式
                .displayer(new RoundedBitmapDisplayer(10))//设置圆角,参数代表弧度
                .build();

        return optionsoptions;

    }

}
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ImageloaderUtil.initConfig(this);
    }
}
 
 
package bwei.com.zhangteng1216.Fragment;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.ArrayList;
import java.util.List;

import bwei.com.zhangteng1216.Bean.Result;
import bwei.com.zhangteng1216.R;
import bwei.com.zhangteng1216.Utils.ImageloaderUtil;
import bwei.com.zhangteng1216.Utils.MyTask;

/**
 * Created by Zhang.T on 2017/12/16.
 */

public class Two extends Fragment {
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            //获取当前正在显示的页面
            int index = vp.getCurrentItem();
            vp.setCurrentItem(index + 1);
            //改变小圆点
            setSelectedPoint((index + 1) % img_list.size());
            //延迟发送消息
            sendEmptyMessageDelayed(1, 2000);

        }
    };
    private List<Result.DataBean.EssayBean.AuthorBean> datas=new ArrayList<>();
    private ArrayList<String> img_list;
    private ArrayList<ImageView> images;
    private View view;
    private ViewPager vp;
    private LinearLayout linearLayout;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.lv_one, null);

        vp = (ViewPager) view.findViewById(R.id.Tab_vp);
        linearLayout = view.findViewById(R.id.lin_bottom);
        initImage();
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

    }

    private void initImage() {
        img_list = new ArrayList<>();
        MyTask myTask = new MyTask(new MyTask.Icallbacks() {
            @Override
            public void updateUiByjson(String jsonstr) {
                Gson gson = new Gson();
                Result result = gson.fromJson(jsonstr, Result.class);
                List<Result.DataBean.EssayBean> essay = result.getData().getEssay();
                for (int i = 0; i <essay.size() ; i++) {
                    img_list.add(essay.get(i).getAuthor_list().get(0).getWeb_url());

                }
                //初始化小圆点
                initDoc();
                //设置适配器
                vp.setAdapter(new ImagePager());
                //设置当前要显示的页面
                vp.setCurrentItem(img_list.size() * 10);

                //实现自动播放
                handler.sendEmptyMessageDelayed(1, 2000);
            }
        });
  myTask.execute("http://v3.wufazhuce.com:8000/api/reading/index/?version=3.5.0&platform=android");
    }

    public void setSelectedPoint(int index) {
        for (int i = 0; i < images.size(); i++) {
            if (i == index) {
                images.get(i).setImageResource(R.drawable.point_selected);
            } else {
                images.get(i).setImageResource(R.drawable.point_un_selected);
            }
        }
    }

    private void initDoc() {
        images = new ArrayList<>();

        for (int i = 0; i < img_list.size(); i++) {
            ImageView imgPoint = new ImageView(getActivity());
            //设置图片的缩放模式
            imgPoint.setScaleType(ImageView.ScaleType.FIT_XY);
            //设置要显示的图片
            if (i == 0) {
                //红色的点
                imgPoint.setImageResource(R.drawable.point_selected);
            } else {
                imgPoint.setImageResource(R.drawable.point_un_selected);
            }

            //设置宽度与高度
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(10, 10);
            params.setMargins(10, 0, 10, 0);
            //添加到底部容器中
            linearLayout.addView(imgPoint, params);
            //添加到集合中
            images.add(imgPoint);

        }
    }

    class ImagePager extends PagerAdapter {


        //返回页面的数量
        @Override
        public int getCount() {
            return Integer.MAX_VALUE;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

        //0~getCount返回的值-1
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            //返回当前显示的视图
            ImageView imageView = new ImageView(getActivity());
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);

            //加载网络的图片list.get(position%list.size())
            ImageLoader.getInstance().displayImage(img_list.get(position % img_list.size()), imageView);


            //添加到容器
            container.addView(imageView);

            return imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {

            container.removeView((View) object);
        }


    }
}
/
布局
android:orientation="vertical">
    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/Tab_vp">
    </android.support.v4.view.ViewPager>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/lin_bottom"
        android:layout_alignBottom="@+id/Tab_vp"
        android:gravity="center"
        android:layout_marginBottom="7dp"></LinearLayout>
</LinearLayout>
//
compile 'com.hjm:BottomTabBar:1.1.1'
compile 'com.youth.banner:banner:1.4.9'
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
 
 
 
 
 
 
 
 
 
 
 
 

                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值