接口:
import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class JieKou extends AsyncTask<String,Void,Bitmap>{ private ImageCallBackListener imageCallBackListener; public JieKou(ImageCallBackListener imageCallBackListener){ this.imageCallBackListener=imageCallBackListener; } public interface ImageCallBackListener { void imageCallBack(Bitmap bitmap); } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); imageCallBackListener.imageCallBack(bitmap); } @Override protected Bitmap doInBackground(String... params) { try { String path = params[0]; URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); int code = connection.getResponseCode(); if(code == HttpURLConnection.HTTP_OK){ InputStream is = connection.getInputStream(); return BitmapFactory.decodeStream(is); } } catch (Exception e) { e.printStackTrace(); } return null; } }图片框架:
import android.app.Application; import android.os.Environment; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import java.io.File; public class Kuangjia extends Application{ @Override public void onCreate() { super.onCreate(); String path = Environment.getExternalStorageDirectory().getPath()+"SWJ"; File file = new File(path); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .memoryCacheSize(2*1024*1024) .memoryCacheExtraOptions(200,200) .threadPoolSize(3) .threadPriority(1000) .diskCache(new UnlimitedDiskCache(file)) .diskCacheSize(50*1024*1024) .diskCacheFileCount(50) .diskCacheFileNameGenerator(new Md5FileNameGenerator()) .build(); ImageLoader.getInstance().init(configuration); } }主界面:
import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; 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.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.google.gson.Gson; import com.limxing.xlistview.view.XListView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { private ViewPager viewPager; private List<String> tupian = new ArrayList<String>(); private int i = 0; private int index = 1; private boolean flag; private MyAdapter adapter; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 1: { viewPager.setCurrentItem(i); } break; } } }; private XListView xlistview; private ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = (ViewPager) findViewById(R.id.viewpager); xlistview = (XListView) findViewById(R.id.xlistview); xlistview.setPullLoadEnable(true); xlistview.setXListViewListener(this); tupian.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212357.jpg"); tupian.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212400.jpg"); tupian.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212403.jpg"); tupian.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212522.jpg"); tupian.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212525.jpg"); viewPager.setAdapter(new MyPageAdapter()); lunbo(); if(WangLuo.isConnection(this)){ qingqiu("http://apis.juhe.cn/cook/query.php",index+"",10+""); }else{ show(); } } private void show() { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setMessage("没有网络,请设置网络"); builder.setNegativeButton("取消",null); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(); intent.setAction("android.settings.WIRELESS_SETTINGS"); startActivity(intent); } }); builder.create().show(); } public void Dia(){ dialog = new ProgressDialog(this); dialog.setMessage("正在玩命加载"); dialog.show(); } private void qingqiu(String path,String pn,String rn) { new AsyncTask<String,Void,String>(){ @Override protected void onPreExecute() { super.onPreExecute(); Dia(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); if(s != null){ Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); List<Bean.ResultBean.DataBean> data = bean.getResult().getData(); if(adapter == null){ adapter = new MyAdapter(data); xlistview.setAdapter(adapter); }else{ adapter.more(data,flag); adapter.notifyDataSetChanged();; } dialog.dismiss(); } } @Override protected String doInBackground(String... params) { try { String path = params[0]; String pn = params[1]; String rn = params[2]; URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); OutputStream os = connection.getOutputStream(); os.write(("key=a71e47bbe5a7e7a2ecf068ca9a756032&menu="+ URLEncoder.encode("西红柿炒鸡蛋","utf-8")+"&pn = "+pn+"&rn="+rn).getBytes()); os.flush(); int code = connection.getResponseCode(); if(code == HttpURLConnection.HTTP_OK){ InputStream is = connection.getInputStream(); String json = Utils.read(is); System.out.println("---------------------"+json); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(path,pn,rn); } private void lunbo() { new Thread(){ @Override public void run() { super.run(); while (true){ i++; int index1 = i % tupian.size(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } handler.sendEmptyMessage(1); } } }.start(); } @Override public void onRefresh() { ++index; qingqiu("http://apis.juhe.cn/cook/query.php",index+"",10+""); flag = true; xlistview.stopRefresh(true); } @Override public void onLoadMore() { ++index; qingqiu("http://apis.juhe.cn/cook/query.php",index+"",10+""); flag = false; xlistview.stopLoadMore(); } class MyPageAdapter extends 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) { final ImageView imageView = new ImageView(MainActivity.this); new JieKou(new JieKou.ImageCallBackListener() { @Override public void imageCallBack(Bitmap bitmap) { if (bitmap != null){ imageView.setImageBitmap(bitmap); }else { imageView.setImageResource(R.mipmap.ic_launcher); } } }).execute(tupian.get(position % tupian.size())); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } class MyAdapter extends BaseAdapter{ private List<Bean.ResultBean.DataBean> data; public MyAdapter(List<Bean.ResultBean.DataBean> data){ this.data = data; } DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheOnDisk(true) .cacheInMemory(true) .showImageOnLoading(R.mipmap.ic_launcher) .build(); public void more(List<Bean.ResultBean.DataBean> datas,boolean flag){ for (Bean.ResultBean.DataBean b: datas) { if(flag){ data.add(0,b); }else{ data.add(b); } } } @Override public int getCount() { return data != null?data.size():0; } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { if(position % 2 ==0){ return 0; }else { return 1; } } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); ViewHolder1 holder1 = null; ViewHolder2 holder2 = null; switch (type){ case 0: { if (convertView == null) { convertView = View.inflate(MainActivity.this, R.layout.item1, null); holder1 = new ViewHolder1(); holder1.tu1 = (ImageView) convertView.findViewById(R.id.tu1); holder1.wenzi1 = (TextView) convertView.findViewById(R.id.wenzi1); convertView.setTag(holder1); } else { holder1 = (ViewHolder1) convertView.getTag(); } holder1.wenzi1.setText(data.get(position).getTitle()); ImageLoader.getInstance().displayImage(data.get(position).getAlbums().get(0), holder1.tu1, options); } break; case 1: { if (convertView == null) { convertView = View.inflate(MainActivity.this, R.layout.item2, null); holder2 = new ViewHolder2(); holder2.tu2 = (ImageView) convertView.findViewById(R.id.tu2); holder2.wenzi2 = (TextView) convertView.findViewById(R.id.wenzi2); convertView.setTag(holder2); } else { holder2 = (ViewHolder2) convertView.getTag(); } holder2.wenzi2.setText(data.get(position).getTitle()); ImageLoader.getInstance().displayImage(data.get(position).getAlbums().get(0), holder2.tu2, options); } break; } return convertView; } } class ViewHolder1{ ImageView tu1; TextView wenzi1; } class ViewHolder2{ ImageView tu2; TextView wenzi2; } }判断网络:
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class WangLuo { public static boolean isConnection(Context context){ ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = manager.getActiveNetworkInfo(); return (networkInfo != null && networkInfo.isConnected() ); } }权限:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ssss.yuekaolianxi"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:name=".Kuangjia" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>