package com.vanco.abplayer.fragment; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import net.youmi.android.banner.AdSize; import net.youmi.android.banner.AdView; import org.json.JSONException; import org.json.JSONObject; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; 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.BiliVideoViewActivity; import com.vanco.abplayer.R; import com.vanco.abplayer.adapter.VideoInfoListAdapter; import com.vanco.abplayer.model.VideoItem; import com.vanco.abplayer.util.HttpUtil; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; public class VideoInfoFragment extends Fragment{ public static String IMAGE_CACHE_PATH = "imageloader/Cache"; // 图片缓存路径 private String page = "1"; boolean isClickable = true; private View rootView; private VideoItem videoinfo; private ImageView videoImgaeView; private TextView titleTextView; private TextView upTextView; private TextView bofangTextView; private TextView danmaguTextView; private Button bofangButton; private TextView labelTextView; private TextView durationTextView; private ListView videoInfoListView; private ImageView arrowButton; private TextView videoNum; private ArrayList<String> videoInfoList = new ArrayList<String>(); private ImageLoader mImageLoader; private DisplayImageOptions options; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); videoinfo = (VideoItem) getActivity().getIntent().getSerializableExtra("videoItemdata"); 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); } final class InJavaScriptLocalObj { public void showSource(String html) { System.out.println("====>html="+html); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.fragment_videoinfo, container, false); initData(); Log.d("T^T","----->onCreateView"); new VideoInfoTask().execute(); return rootView; } private void initData() { videoImgaeView = (ImageView) rootView.findViewById(R.id.imageView); titleTextView = (TextView) rootView.findViewById(R.id.titleTextView); upTextView= (TextView) rootView.findViewById(R.id.authorTextView); bofangTextView= (TextView) rootView.findViewById(R.id.playTextView); danmaguTextView= (TextView) rootView.findViewById(R.id.video_reviewTextView); bofangButton = (Button) rootView.findViewById(R.id.playButton); labelTextView= (TextView) rootView.findViewById(R.id.labelTextView); durationTextView = (TextView) rootView.findViewById(R.id.durationTextView); videoInfoListView = (ListView) rootView.findViewById(R.id.video_info_list); arrowButton = (ImageView) rootView.findViewById(R.id.arrowButton); videoNum = (TextView) rootView.findViewById(R.id.videoNumTextView); mImageLoader.displayImage(videoinfo.getPic(), videoImgaeView,options); titleTextView.setText(videoinfo.getTitle()); upTextView.setText("Up主:"+videoinfo.getAuthor()); bofangTextView.setText("播放:"+videoinfo.getPlay()); danmaguTextView.setText("弹幕:"+videoinfo.getVideo_review()); //labelTextView.setText(videoinfo.getVideo_review()); durationTextView.setText(" "+videoinfo.getDescription()); // 实例化广告条 AdView adView = new AdView(getActivity(), AdSize.FIT_SCREEN); // 获取要嵌入广告条的布局 LinearLayout adLayout=(LinearLayout)rootView.findViewById(R.id.adLayout); // 将广告条加入到布局中 adLayout.addView(adView); bofangButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if(bofangButton.getText().equals("点击播放")){ Log.d("T^T","----->点击播放"); // 处理跳转逻辑 // Intent i = new Intent(); // i.setClass(getActivity(), VideoViewActivity.class); // i.putExtra("videoPath", videopath); // i.putExtra("title", videoinfo.getTitle()); // startActivity(i); Intent intent = new Intent(getActivity(), BiliVideoViewActivity.class); // intent.putExtra("path", item.url); intent.putExtra("displayName",videoinfo.getTitle()); intent.putExtra("av",videoinfo.getAid()); page = "1"; intent.putExtra("page",page); startActivity(intent); // 动画过渡 getActivity().overridePendingTransition(R.anim.push_left_in,R.anim.push_no); } } }); arrowButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if (isClickable) { durationTextView.setMaxLines(durationTextView.getLineCount()); isClickable = false; arrowButton.setImageResource(R.drawable.abcp__expander_close_holo_light); } else { durationTextView.setMaxLines(2); isClickable = true; arrowButton.setImageResource(R.drawable.abcp__expander_open_holo_light); } } }); } @Override public void onStop() { // TODO Auto-generated method stub super.onStop(); } private class VideoInfoTask extends AsyncTask<String, Void, Integer> { String label; @Override protected Integer doInBackground(String... arg0) { // String videoHTML = HttpUtil.sendPost("http://www.iippcc.com/bilibili/", "text=av"+videoinfo.getAid()+"&submit=搜索菌"); // // Document doc = Jsoup.parse(videoHTML); // Elements links = doc.select("a[href]"); // for (Element link : links) { // if(link.text().equals("分段1")){ // videopath = link.attr("href"); // } // } // // Elements labels = doc.getElementsByClass("col-md-7"); // labels = labels.select("button"); // //label = labels.get(3).text(); // cID = labels.get(6).text().substring(4); // // String listHTML = HttpUtil.getHtmlString("http://www.bilibili.com/mobile/video/av"+videoinfo.getAid()+".html"); Log.d("QAQ--->","===>列表加载中"); Document listDoc = Jsoup.parse(listHTML); Elements listElements = listDoc.getElementsByClass("li-wrap-content"); for (int i = 0; i < listElements.size(); i++) { Log.d("QAQ--->","===>"+listElements.get(i).text()); videoInfoList.add(listElements.get(i).text()); } Elements labelElements = listDoc.select("[name=keywords]"); Log.d("QAQ--->","===>"+labelElements.attr("content")); label = labelElements.attr("content"); return null; } @Override protected void onPostExecute(Integer result) { // TODO Auto-generated method stubs super.onPostExecute(result); if(label != null){ bofangButton.setText("点击播放"); }else{ bofangButton.setText("加载失败"); } if(label != null){ label = label.substring(20); labelTextView.setText("标签:"+label); if(videoInfoList != null){ videoInfoListView.setAdapter(new VideoInfoListAdapter(getActivity(),videoInfoList,videoinfo.getAid())); videoNum.setText("共有"+videoInfoList.size()+"段视频"); } } if(durationTextView.getLineCount() > 2){ arrowButton.setVisibility(View.VISIBLE); } } } }