package com.vanco.abplayer.fragment; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.vanco.abplayer.BiliWebviewActivity; import com.vanco.abplayer.R; import com.vanco.abplayer.model.BannerItem; import com.vanco.abplayer.model.VideoItem; import com.vanco.abplayer.util.HttpUtil; import android.content.Intent; import android.graphics.Bitmap; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Parcelable; import android.support.v4.app.Fragment; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.TextView; import android.widget.ImageView.ScaleType; public class HomePageFragment extends Fragment{ public static String IMAGE_CACHE_PATH = "imageloader/Cache"; // 图片缓存路径 public View rootView; private ViewPager adViewPager; private List<ImageView> imageViews;// 滑动的图片集合 private List<View> dots; // 图片标题正文的那些点 private List<View> dotList; private int currentItem = 0; // 当前图片的索引号 // 定义的五个指示点 private View dot0; private View dot1; private View dot2; private View dot3; private View dot4; private View dot5; //新番区控件 ImageView bangumiImageView01; TextView bagumiTextView_title01; TextView bagumiTextView01_baofang; TextView bagumiTextView01_danmugu; ImageView bangumiImageView02; TextView bagumiTextView_title02; TextView bagumiTextView02_baofang; TextView bagumiTextView02_danmugu; ImageView bangumiImageView03; TextView bagumiTextView_title03; TextView bagumiTextView03_baofang; TextView bagumiTextView03_danmugu; ImageView bangumiImageView04; TextView bagumiTextView_title04; TextView bagumiTextView04_baofang; TextView bagumiTextView04_danmugu; private List<VideoItem> videoItemList; private ScheduledExecutorService scheduledExecutorService; // 异步加载图片 private ImageLoader mImageLoader; private DisplayImageOptions options; // 轮播banner的数据 private List<BannerItem> adList; private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { adViewPager.setCurrentItem(currentItem); }; }; public HomePageFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initImageLoader(); // 获取图片加载实例 mImageLoader = ImageLoader.getInstance(); options = new DisplayImageOptions.Builder() .showStubImage(R.drawable.top_banner_android) .showImageForEmptyUri(R.drawable.top_banner_android) .showImageOnFail(R.drawable.top_banner_android) .cacheInMemory(true).cacheOnDisc(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY).build(); } private void initImageLoader() { File cacheDir = com.nostra13.universalimageloader.utils.StorageUtils .getOwnCacheDirectory(this.getActivity().getApplicationContext(), IMAGE_CACHE_PATH); DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() .cacheInMemory(true).cacheOnDisc(true).build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( this.getActivity()).defaultDisplayImageOptions(defaultOptions) .memoryCache(new LruMemoryCache(12 * 1024 * 1024)) .memoryCacheSize(12 * 1024 * 1024) .discCacheSize(32 * 1024 * 1024).discCacheFileCount(100) .discCache(new UnlimitedDiscCache(cacheDir)) .threadPriority(Thread.NORM_PRIORITY - 2) .tasksProcessingOrder(QueueProcessingType.LIFO).build(); ImageLoader.getInstance().init(config); } private void initAdData() { // 广告数据 //adList = getBannerAd(); imageViews = new ArrayList<ImageView>(); // 点 dots = new ArrayList<View>(); dotList = new ArrayList<View>(); dot0 = rootView.findViewById(R.id.v_dot0); dot1 = rootView.findViewById(R.id.v_dot1); dot2 = rootView.findViewById(R.id.v_dot2); dot3 = rootView.findViewById(R.id.v_dot3); dot4 = rootView.findViewById(R.id.v_dot4); dot5 = rootView.findViewById(R.id.v_dot5); dots.add(dot0); dots.add(dot1); dots.add(dot2); dots.add(dot3); dots.add(dot4); dots.add(dot5); addDynamicView(); adViewPager = (ViewPager) rootView.findViewById(R.id.vp); adViewPager.setAdapter(new HomePageADAdapter());// 设置填充ViewPager页面的适配器 // 设置一个监听器,当ViewPager中的页面改变时调用 adViewPager.setOnPageChangeListener(new HomePageADChangeListener()); } private void initBangumiData() { bangumiImageView01 = (ImageView) rootView.findViewById(R.id.BangumiImageView01); bagumiTextView_title01 = (TextView) rootView.findViewById(R.id.BangumiTextView01); bagumiTextView01_baofang = (TextView) rootView.findViewById(R.id.BangumiImageView01_baofang); bagumiTextView01_danmugu = (TextView) rootView.findViewById(R.id.BangumiImageView01_danmugu); bangumiImageView02 = (ImageView) rootView.findViewById(R.id.BangumiImageView02); bagumiTextView_title02 = (TextView) rootView.findViewById(R.id.BangumiTextView02); bagumiTextView02_baofang = (TextView) rootView.findViewById(R.id.BangumiImageView02_baofang); bagumiTextView02_danmugu = (TextView) rootView.findViewById(R.id.BangumiImageView02_danmugu); bangumiImageView03 = (ImageView) rootView.findViewById(R.id.BangumiImageView03); bagumiTextView_title03 = (TextView) rootView.findViewById(R.id.BangumiTextView03); bagumiTextView03_baofang = (TextView) rootView.findViewById(R.id.BangumiImageView03_baofang); bagumiTextView03_danmugu = (TextView) rootView.findViewById(R.id.BangumiImageView03_danmugu); bangumiImageView04 = (ImageView) rootView.findViewById(R.id.BangumiImageView04); bagumiTextView_title04 = (TextView) rootView.findViewById(R.id.BangumiTextView04); bagumiTextView04_baofang = (TextView) rootView.findViewById(R.id.BangumiImageView04_baofang); bagumiTextView04_danmugu = (TextView) rootView.findViewById(R.id.BangumiImageView04_danmugu); mImageLoader.displayImage(videoItemList.get(0).getPic(), bangumiImageView01,options); bagumiTextView_title01.setText(videoItemList.get(0).getTitle().toString()); bagumiTextView01_baofang.setText(videoItemList.get(0).getPlay().toString()); bagumiTextView01_danmugu.setText(videoItemList.get(0).getVideo_review().toString()); mImageLoader.displayImage(videoItemList.get(1).getPic(), bangumiImageView02,options); bagumiTextView_title02.setText(videoItemList.get(1).getTitle().toString()); bagumiTextView02_baofang.setText(videoItemList.get(1).getPlay().toString()); bagumiTextView02_danmugu.setText(videoItemList.get(1).getVideo_review().toString()); mImageLoader.displayImage(videoItemList.get(2).getPic(), bangumiImageView03,options); bagumiTextView_title03.setText(videoItemList.get(2).getTitle().toString()); bagumiTextView03_baofang.setText(videoItemList.get(2).getPlay().toString()); bagumiTextView03_danmugu.setText(videoItemList.get(2).getVideo_review().toString()); mImageLoader.displayImage(videoItemList.get(3).getPic(), bangumiImageView04,options); bagumiTextView_title04.setText(videoItemList.get(3).getTitle().toString()); bagumiTextView04_baofang.setText(videoItemList.get(3).getPlay().toString()); bagumiTextView04_danmugu.setText(videoItemList.get(3).getVideo_review().toString()); } private void addDynamicView() { // 动态添加图片和下面指示的圆点 // 初始化图片资源 for (int i = 0; i < adList.size(); i++) { ImageView imageView = new ImageView(this.getActivity()); // 异步加载图片 mImageLoader.displayImage(adList.get(i).getImg(), imageView, options); imageView.setScaleType(ScaleType.CENTER_CROP); imageViews.add(imageView); dots.get(i).setVisibility(View.VISIBLE); dotList.add(dots.get(i)); } } private void startAd() { scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); // 当Activity显示出来后,每两秒切换一次图片显示 scheduledExecutorService.scheduleAtFixedRate(new ScrollTask(), 1, 2, TimeUnit.SECONDS); } private class ScrollTask implements Runnable { @Override public void run() { synchronized (adViewPager) { currentItem = (currentItem + 1) % imageViews.size(); handler.obtainMessage().sendToTarget(); } } } @Override public void onStop() { super.onStop(); // 当Activity不可见的时候停止切换 scheduledExecutorService.shutdown(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.fragment_main, container, false); Log.d("win","hhhhhhhhhhhh"); new MainTask().execute("0"); return rootView; } private class HomePageADAdapter extends PagerAdapter{ @Override public int getCount() { return adList.size(); } @Override public Object instantiateItem(ViewGroup container, final int position) { ImageView iv = imageViews.get(position); ((ViewPager) container).addView(iv); // 在这个方法里面设置图片的点击事件 iv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 处理跳转逻辑 BannerItem item = (BannerItem) adList.get(position); Intent i = new Intent(); i.setClass(getActivity(), BiliWebviewActivity.class); i.putExtra("bannerLink", item.getLink()); startActivity(i); // 动画过渡 getActivity().overridePendingTransition(R.anim.push_left_in, R.anim.push_no); Log.e("position", "" + position); } }); return iv; } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView((View) arg2); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View arg0) { } @Override public void finishUpdate(View arg0) { } } private class HomePageADChangeListener implements OnPageChangeListener { private int oldPosition = 0; @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) { currentItem = position; dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal); dots.get(position).setBackgroundResource(R.drawable.dot_focused); oldPosition = position; } } private class MainTask extends AsyncTask<String, Void, Integer> { ArrayList<BannerItem> Listtemp = new ArrayList<BannerItem>(); ArrayList<VideoItem> bangumiListtemp = new ArrayList<VideoItem>(); @Override protected Integer doInBackground(String... params) { JSONObject bannerjson; JSONObject bangumijson; try { bannerjson = new JSONObject(HttpUtil.getHtmlString("http://www.bilibili.com/index/slideshow.json")); JSONArray array=bannerjson.getJSONArray("list"); for (int i=0;i<array.length();i++) { BannerItem item = new BannerItem(); item.setImg(array.getJSONObject(i).getString("img").toString()); item.setTitle(array.getJSONObject(i).getString("title").toString()); item.setLink(array.getJSONObject(i).getString("link").toString()); item.setAd(false); Listtemp.add(item); } bangumijson = new JSONObject(HttpUtil.getHtmlString("http://www.bilibili.com/index/ding.json")); //Log.i("gg",bangumijson.toString()); JSONObject bangumiarray=bangumijson.getJSONObject("bangumi"); for (int i=0;i<bangumiarray.length();i++) { VideoItem item = new VideoItem(); item.setAid(bangumiarray.getJSONObject(i+"").getString("aid").toString()); item.setTypeid(bangumiarray.getJSONObject(i+"").getString("typeid").toString()); item.setTitle(bangumiarray.getJSONObject(i+"").getString("title").toString()); item.setSbutitle(bangumiarray.getJSONObject(i+"").optString("sbutitle").toString()); item.setPlay(bangumiarray.getJSONObject(i+"").getString("play").toString()); item.setReview(bangumiarray.getJSONObject(i+"").getString("review").toString()); item.setVideo_review(bangumiarray.getJSONObject(i+"").getString("video_review").toString()); item.setFavorites(bangumiarray.getJSONObject(i+"").getString("favorites").toString()); item.setMid(bangumiarray.getJSONObject(i+"").getString("mid").toString()); item.setAuthor(bangumiarray.getJSONObject(i+"").getString("author").toString()); item.setDescription(bangumiarray.getJSONObject(i+"").getString("description").toString()); item.setCreate(bangumiarray.getJSONObject(i+"").getString("create").toString()); item.setPic(bangumiarray.getJSONObject(i+"").getString("pic").toString()); item.setCredit(bangumiarray.getJSONObject(i+"").getString("credit").toString()); item.setCoins(bangumiarray.getJSONObject(i+"").getString("coins").toString()); item.setDuration(bangumiarray.getJSONObject(i+"").getString("duration").toString()); bangumiListtemp.add(item); Log.i("tag", bangumiarray.getJSONObject(i+"").getString("pic").toString()); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } Listtemp.get(Listtemp.size()-1).setAd(true); return null; } @Override protected void onPostExecute(Integer result) { super.onPostExecute(result); adList = Listtemp; videoItemList = bangumiListtemp; initAdData(); initBangumiData(); startAd(); // adViewPager.notifyAll(); } } }