AsyncTask设置
(ps:需要.execute()
Gson添加依赖implementation ‘com.google.code.gson:gson:2.8.5’
android:numColumns=“2”)
class MyAsyn extends AsyncTask<String, Void, String> {
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int currentItem = vp.getCurrentItem() + 1;
vp.setCurrentItem(currentItem);
handler.sendEmptyMessageDelayed(11, 3000);
}
};
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL("http://api.tianapi.com/meinv/?key=8322c06e5b327bbd19a026a643835f7e&num=15");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5 * 1000);
connection.setReadTimeout(5 * 1000);
int code = connection.getResponseCode();
if (code == HttpURLConnection.HTTP_OK) {
InputStream ins = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
StringBuilder builder = new StringBuilder();
String str = "";
if ((str = reader.readLine()) != null) {
builder.append(str);
}
connection.connect();
Log.i("WA","内容"+builder.toString());
return builder.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
FruitBean fruitBean = gson.fromJson(s, FruitBean.class);
final List<FruitBean.NewslistBean> list = fruitBean.getNewslist();
final List<String> list1 = new ArrayList<String>();
if (list != null) {
for (FruitBean.NewslistBean newslistBean : list) {
String pic = newslistBean.getPicUrl();
String url = newslistBean.getUrl();
list1.add(pic);
}
}
MyGridAdapter myGridAdapter = new MyGridAdapter(ShowActivity.this, list);
gv.setAdapter(myGridAdapter);
vp.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) {
ImageView image = new ImageView(ShowActivity.this);
position = position % list1.size();
ImageLoader.getInstance().displayImage(list1.get(position), image);
final int finalPosition = position;
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String url = list.get(finalPosition).getUrl();
Intent intent = new Intent(ShowActivity.this, WebActivity.class);
intent.putExtra("url", url);
startActivity(intent);
}
});
container.addView(image);
return image;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((ImageView) object);
}
});
handler.sendEmptyMessageDelayed(11, 3000);
}
}
ImagerLoader配置
(ps:配置完之后需要在xml清单文件声明App
添加依赖:implementation ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’)
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration builder = ImageLoader.getInstance().init(new ImageLoaderConfiguration.Builder(this)
.memoryCacheSizePercentage(10)
.diskCacheSize(50*1024*1024)
.defaultDisplayImageOptions(new DisplayImageOptions.Builder()
.bitmapConfig(Bitmap.Config.RGB_565)
.cacheOnDisk(true)
.cacheInMemory(true)
.showImageOnFail(R.mipmap.ic_launcher)
.showImageOnLoading(R.mipmap.ic_launcher)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.build())
.build());
ImageLoader.getInstance().init(builder);
}
或(只用于加载json里的图片)
public class App extends Application {
@Override
public void onCreate() {
ImageLoaderConfiguration builder = new ImageLoaderConfiguration.Builder(this).build();
ImageLoader.getInstance().init(builder);
}
工具类
public class NetUtils {
private static NetUtils intance;
private Gson gson;
public NetUtils() {
gson = new Gson();
}
public static NetUtils getIntance() {
if(intance == null){
intance = new NetUtils();
}
return intance;
}
//执行网络请求返回String
public String getRequest(String urlStr){
String result = "";
try {
//定义url地址
URL url = new URL(urlStr);
//打开连接
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//设置请求格式
urlConnection.setRequestMethod("GET");
//设置超时
urlConnection.setReadTimeout(5000);
urlConnection.setConnectTimeout(5000);
//获取请求码
int responseCode = urlConnection.getResponseCode();
if(responseCode == 200){
result = stream2String(urlConnection.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
//将字节流转换为总分流
private String stream2String(InputStream inputStream) throws IOException {
StringBuilder builder = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
for (String tmp = br.readLine();tmp!=null;tmp = br.readLine()){
builder.append(tmp);
}
return builder.toString();
}
//执行网络请求返回Bean
public <E> E getRequest(String urlStr,Class clazz){
return (E) gson.fromJson(getRequest(urlStr),clazz);
}
//定义接口
public interface CallBack<E>{
void onSuccess(E e);
}
//异步请求
@SuppressLint("StaticFieldLeak")
public void getRequest(String urlStr, final Class clazz, final CallBack callBack){
new AsyncTask<String,Void,Object>(){
@Override
protected Object doInBackground(String... strings) {
return getRequest(strings[0],clazz);
}
@Override
protected void onPostExecute(Object o) {
callBack.onSuccess(o);
}
}.execute(urlStr);
}
//判断是否有网络
public boolean hasNetWork(Context context){
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
return activeNetworkInfo!=null && activeNetworkInfo.isAvailable();
}
}