MainActivity
package com.example.week2; import android.content.Intent; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; public class MainActivity extends AppCompatActivity { private ListView lv; private List<MenuInfo.ResultBean.DataBean.StepsBean> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv= (ListView) findViewById(R.id.listview); getData(); } private void getData(){ new AsyncTask<String, Void, String>() { @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson=new Gson(); MenuInfo menuInfo=gson.fromJson(s,MenuInfo.class); list=menuInfo.getResult().getData().get(0).getSteps(); lv.setAdapter(new MyAdapter()); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent it=new Intent(MainActivity.this,SecondActivity.class); it.putExtra("image",list.get(i).getImg()); it.putExtra("text",list.get(i).getStep()); startActivity(it); finish(); } }); } @Override protected String doInBackground(String... strings) { try { String path=strings[0]; URL url=new URL(path); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); OutputStream os=connection.getOutputStream(); os.write("key=4866477692b8491f120e3608db277cb0&menu=红烧肉".getBytes()); os.flush(); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int code=connection.getResponseCode(); if(code==HttpURLConnection.HTTP_OK){ InputStream is=connection.getInputStream(); ByteArrayOutputStream baos=new ByteArrayOutputStream(); int len=0; byte[] buffer=new byte[1024]; while ((len=is.read(buffer))!=-1){ baos.write(buffer,0,len); } return baos.toString(); } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute("http://apis.juhe.cn/cook/query.php"); } class MyAdapter extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; if(view==null){ holder=new ViewHolder(); view=View.inflate(MainActivity.this,R.layout.items,null); holder.ivIcon=view.findViewById(R.id.ivIcon); holder.tvContent=view.findViewById(R.id.tvContent); view.setTag(holder); }else{ holder= (ViewHolder) view.getTag(); } holder.tvContent.setText(list.get(i).getStep()); DisplayImageOptions options=new DisplayImageOptions.Builder() .showImageOnFail(R.mipmap.ic_launcher) .showImageOnLoading(R.mipmap.ic_launcher) .build(); ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(MainActivity.this).build(); ImageLoader.getInstance().init(configuration); ImageLoader.getInstance().displayImage(list.get(i).getImg(),holder.ivIcon,options); return view; } } class ViewHolder{ TextView tvContent; ImageView ivIcon; } }
SecondActivity
package com.example.week2; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; /** * */ public class SecondActivity extends AppCompatActivity { private ImageView imgaeview; private TextView textview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); imgaeview= (ImageView) findViewById(R.id.second_img); textview= (TextView) findViewById(R.id.second_text); Intent intent=getIntent(); final String image=intent.getStringExtra("image"); String text=intent.getStringExtra("text"); textview.setText(text); ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(SecondActivity.this).build(); ImageLoader.getInstance().init(configuration); ImageLoader.getInstance().loadImage(image, new ImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { imgaeview.setImageResource(R.mipmap.ic_launcher); } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { Bitmap radio=radio(loadedImage,2); imgaeview.setImageBitmap(radio); } @Override public void onLoadingCancelled(String imageUri, View view) { } }); } private Bitmap radio(Bitmap bitmap,float radioimag){ Bitmap bitmap1 = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas=new Canvas(bitmap1); Paint paint = new Paint(); Rect rect = new Rect(0,0,bitmap.getWidth(),bitmap.getHeight()); RectF rectF=new RectF(rect); paint.setAntiAlias(true); canvas.drawARGB(0,0,0,0); canvas.drawRoundRect(rectF,bitmap.getWidth()/radioimag,bitmap.getHeight()/radioimag,paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap,rect,rect,paint); return bitmap1; } }