package com.android.play; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.android.adapter.LoopPagerAdapter; import com.android.adapter.NewsAdapter; import com.android.entity.Constant; import com.android.entity.NewsBean; import com.android.hintview.ColorPointHintView; import com.android.hintview.RollPagerView; import com.squareup.picasso.Picasso; import com.squareup.picasso.Target; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2016/6/11. */ public class HomePagerFragment extends Fragment { private String TAG = Constant.TAG; private ListView mListView; private TextView mEmptyText; private RollPagerView mRollViewPager; private TestLoopAdapter mLoopAdapter; private MoocLoopAdapter mMoocAdapter; private List<Bitmap> bitmaps = new ArrayList<Bitmap>(); private static String URL = "http://www.imooc.com/api/teacher?type=4&num=30"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.i(TAG," HomepagerFragement : onCreateView"); return inflater.inflate(R.layout.home_fragementlayout,container, false); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.i(TAG," HomepagerFragement : onActivityCreated"); mListView = (ListView) getActivity().findViewById(R.id.lv_main); mEmptyText = (TextView) getActivity().findViewById(R.id.empty_tab); mRollViewPager= (RollPagerView)getActivity().findViewById(R.id.roll_view_pager); mRollViewPager.setPlayDelay(2000); // mRollViewPager.setAdapter(mLoopAdapter = new TestLoopAdapter(mRollViewPager)); // mRollViewPager.setHintView(new IconHintView(this,R.drawable.point_focus,R.drawable.point_normal)); mRollViewPager.setHintView(new ColorPointHintView(getActivity(), Color.YELLOW, Color.WHITE)); //mRollViewPager.setHintView(new TextHintView(this)); //mRollViewPager.setHintView(null); new NewsAsyncTask().execute(URL); new RollPagerAsyncTask().execute(""); } //实现网络的异步访问 class NewsAsyncTask extends AsyncTask<String,Void,List<NewsBean>>/*网址,过程,结果*/{ @Override protected List<NewsBean> doInBackground(String... params) { return getJsonData(params[0]); } @Override protected void onPostExecute(final List<NewsBean> newsBeen) { super.onPostExecute(newsBeen); Log.i(TAG," HomePagerFragment : onPostExecute = "+newsBeen.size()); if (newsBeen.size() > 1){ Log.i(TAG," HomePagerFragment : onPostExecute if= "); mEmptyText.setVisibility(View.GONE); } Log.i(TAG, " 1 : "+newsBeen.get(2).newsIconUrl); Log.i(TAG, " 2 : "+newsBeen.get(5).newsIconUrl); Log.i(TAG, " 3 : "+newsBeen.get(8).newsIconUrl); Log.i(TAG, " 4 : "+newsBeen.get(9).newsIconUrl); Log.i(TAG, " 5 : "+newsBeen.get(11).newsIconUrl); NewsAdapter adapter = new NewsAdapter(getActivity(), newsBeen, mListView); mListView.setAdapter(adapter); } } /* * 将url对应得json格式数据转化为我们所封装的对象 */ private List<NewsBean> getJsonData(String url) { List<NewsBean> newsBeanList = new ArrayList<>(); try { String jsonString = readStream(new URL(URL).openStream()); Log.i(TAG,"jsonString : "+jsonString); JSONObject jsonObject; NewsBean newsBean; jsonObject = new JSONObject(jsonString); JSONArray jsonArray = jsonObject.getJSONArray("data"); for (int i = 0 ; i< jsonArray.length();i++){ jsonObject = jsonArray.getJSONObject(i); newsBean = new NewsBean(); newsBean.newsIconUrl = jsonObject.getString("picSmall"); newsBean.newsTitle = jsonObject.getString("name"); newsBean.newsContent= jsonObject.getString("description"); newsBeanList.add(newsBean); } } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } return newsBeanList; } /* * 通过is解析网页返回的数据 */ private String readStream(InputStream is){ InputStreamReader isr; String result = ""; try { String line = ""; isr = new InputStreamReader(is,"utf-8"); BufferedReader br = new BufferedReader(isr); while((line = br.readLine()) != null){ result += line; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } class RollPagerAsyncTask extends AsyncTask<String,Void,List<Bitmap>>{ @Override protected List<Bitmap> doInBackground(String... params) { bitmaps.add(getBitmapFromURL("http://img.mukewang.com/5523711700016d1606000338-300-170.jpg")); bitmaps.add(getBitmapFromURL("http://img.mukewang.com/552640c300018a9606000338-300-170.jpg")); bitmaps.add(getBitmapFromURL("http://img.mukewang.com/551b98ae0001e57906000338-300-170.jpg")); bitmaps.add(getBitmapFromURL("http://img.mukewang.com/550b86560001009406000338-300-170.jpg")); bitmaps.add(getBitmapFromURL("http://img.mukewang.com/5518ecf20001cb4e06000338-300-170.jpg")); return bitmaps; } @Override protected void onPostExecute(List<Bitmap> bitmaps) { super.onPostExecute(bitmaps); Log.i(TAG, "RollPaper size = "+ bitmaps.size()); if(bitmaps.size() > 1){ mRollViewPager.setAdapter(mMoocAdapter = new MoocLoopAdapter(mRollViewPager)); }else{ mRollViewPager.setAdapter(mLoopAdapter = new TestLoopAdapter(mRollViewPager)); } mMoocAdapter.notifyDataSetChanged(); } } // 通过一个网络上的url来转换成图片 public Bitmap getBitmapFromURL(String urlString){ Bitmap bitmap; InputStream is = null; try { URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); is = new BufferedInputStream(connection.getInputStream()); bitmap = BitmapFactory.decodeStream(is); connection.disconnect(); return bitmap; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } private class MoocLoopAdapter extends LoopPagerAdapter { private int count = bitmaps.size(); public MoocLoopAdapter(RollPagerView viewPager) { super(viewPager); } @Override public View getView(ViewGroup container, int position) { ImageView view = new ImageView(container.getContext()); view.setImageBitmap(bitmaps.get(position)); view.setScaleType(ImageView.ScaleType.CENTER_CROP); Log.i("fenghaitao","===============getView==position="+position); view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return view; } @Override public int getRealCount() { return count; } } private class TestLoopAdapter extends LoopPagerAdapter { private int[] imgs = { R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4, R.drawable.img5, }; private int count = imgs.length; public void add(){ Log.i("RollViewPager","Add"); count++; if (count>imgs.length)count = imgs.length; notifyDataSetChanged(); } public void minus(){ Log.i("RollViewPager","Minus"); count--; if (count<1)count=1; notifyDataSetChanged(); } public TestLoopAdapter(RollPagerView viewPager) { super(viewPager); } @Override public View getView(ViewGroup container, int position) { ImageView view = new ImageView(container.getContext()); view.setImageResource(imgs[position]); view.setScaleType(ImageView.ScaleType.CENTER_CROP); Log.i("fenghaitao","===============getView==position="+position); view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return view; } @Override public int getRealCount() { return count; } } }