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'