package com.letv.watchball.ui.impl; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import android.widget.ListView; import com.letv.watchball.R; import com.letv.watchball.adapter.DetailVideosEpisodeAdapter; import com.letv.watchball.adapter.DetailVideosListAdapter; import com.letv.watchball.bean.Video; import com.letv.watchball.bean.VideoList; import com.letv.watchball.ui.LetvBaseFragment; import com.letv.watchball.ui.LetvFunction; import com.letv.watchball.ui.PlayAlbumController; import com.letv.watchball.ui.PlayAlbumController.PlayAlbumControllerCallBack; import com.letv.watchball.ui.PlayController; import com.letv.watchball.ui.PlayLiveController; import com.letv.watchball.utils.UIs; import com.letv.watchball.view.PublicLoadLayout; public class HalfPlayVideosFragment extends LetvBaseFragment implements PlayAlbumControllerCallBack,OnItemClickListener{ private PlayController playController; private PublicLoadLayout root; /** * 翻页切换标签布局 * */ private View episodeScroll; /** * 翻页切换标签 * */ private GridView episodeGallery; /** * 剧集列表 宫格形势 * */ private GridView videosGridView; /** * 剧集列表 列表形势 * */ private ListView videosListView; /** * 宫格适配器 * */ // private DetailVideosGridAdapter gridAdapter; /** * 列表适配器 * */ private DetailVideosListAdapter listAdapter; /** * 翻页适配器 * */ private DetailVideosEpisodeAdapter episodeAdapter; private int curPage = 0; private View videoLoadingLayout; @Override public void onAttach(Activity activity) { super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { root = UIs.createPage(getActivity(), R.layout.detailplay_half_videos); findView(); return root; } private void findView() { episodeScroll = root.findViewById(R.id.detailplay_half_video_anthology_scroll); episodeGallery = (GridView) root.findViewById(R.id.detailplay_half_video_anthology_horigallery); videosGridView = (GridView) root.findViewById(R.id.detailplay_half_video_anthology_gridview); videosListView = (ListView) root.findViewById(R.id.detailplay_half_video_anthology_listview); videoLoadingLayout = root.findViewById(R.id.videos_loading_layout); int h = UIs.getScreenHeight(); int w = UIs.getScreenWidth(); episodeScroll.getLayoutParams().width = Math.min(w, h); videosGridView.getLayoutParams().width = Math.min(w, h); videosListView.getLayoutParams().width = Math.min(w, h); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); playController = ((BasePlayActivity) getActivity()).mPlayController; if (playController != null) { playController.videosCallBack = this; } // episodeGallery.setViewPager(playAlbumController.getViewPager()); Log.d("lhz", "HalfPlayVideosFragment.onActivityCreated()"); handlerData(); // registerReceiver(); } /** * 销毁相关成员变量 * */ @Override public void onDestroyView() { super.onDestroyView(); // unregisterReceiver(); playController.videosCallBack = null; playController = null; episodeAdapter = null; listAdapter = null; episodeGallery = null; videosGridView = null; videosListView = null; } /** * 创建视频列表 * */ private void createVideos() { if (playController.videos != null && playController.videos.get(playController.curPage) != null) {// 判断要显示的页面数据是否存在 root.finish(); createEpisode(); if (playController.isList) { createVideosList(); } else { createVideosGrid(); } } }; /** * 创建选集列表 * */ private void createEpisode() { int curPage = playController.curPage; int totle = playController.totle; int pageSize = playController.pageSize; Log.d("newsPage", "total = " + totle); Log.d("newsPage", "pagesize = " + pageSize); if (totle > pageSize) { int cl = LetvFunction.calculateRows(totle, pageSize); episodeGallery.getLayoutParams().width = UIs.zoomWidth(70 * cl); episodeGallery.setStretchMode(GridView.STRETCH_COLUMN_WIDTH); episodeGallery.setNumColumns(cl); if (episodeAdapter == null) { episodeAdapter = new DetailVideosEpisodeAdapter(getActivity()); episodeGallery.setAdapter(episodeAdapter); episodeScroll.setVisibility(View.GONE); episodeGallery.setOnItemClickListener(episodeClickListener); episodeAdapter.setTotle(totle); episodeAdapter.setCurPage(curPage); episodeAdapter.setPageSize(pageSize); episodeAdapter.notifyDataSetChanged(); } } } /** * 创建列表 * */ private void createVideosList() { int curPage = playController.curPage; long curId = playController.vid; VideoList list = playController.videos.get(curPage); if (list != null) { if (listAdapter == null) { listAdapter = new DetailVideosListAdapter(getActivity()); videosListView.setAdapter(listAdapter); videosListView.setVisibility(View.VISIBLE); videosGridView.setVisibility(View.GONE); } videosListView.setOnItemClickListener(listItemClickListenerForPlay); listAdapter.setList(list); listAdapter.setCurId(curId); listAdapter.notifyDataSetChanged(); if (list.contains(playController.getVideo())) { videosListView.setSelection(list.indexOf(playController.getVideo())); } } }; /** * 创建宫格 * */ private void createVideosGrid() { int curPage = playController.curPage; VideoList list = playController.videos.get(curPage); if (list != null) { videosGridView.setOnItemClickListener(gridItemClickListenerForPlay); videosGridView.setSelection(list.indexOf(playController.getVideo())); } }; /** * 选集点击 * */ private OnItemClickListener episodeClickListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { videoLoadingLayout.setVisibility(View.VISIBLE); videosListView.setVisibility(View.GONE); if (playController.getVideoList(position + 1)) { createVideos(); } int curPage = playController.curPage; int totle = playController.totle; int pageSize = playController.pageSize; episodeAdapter.setTotle(totle); episodeAdapter.setCurPage(position + 1); episodeAdapter.setPageSize(pageSize); episodeAdapter.notifyDataSetChanged(); mHandler.sendEmptyMessageDelayed(0,400); } }; private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { videoLoadingLayout.setVisibility(View.GONE); videosListView.setVisibility(View.VISIBLE); } }; /** * 播放 * */ private OnItemClickListener listItemClickListenerForPlay = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Video video = playController.videos.get(playController.curPage).get(position); int curpage=playController.curPage; playController.content=null; if(playController instanceof PlayLiveController){ BasePlayActivity.launch(getActivity(), playController.aid, video.getId(),curpage); return; } if(playController instanceof PlayAlbumController){ ((PlayAlbumController)playController).isPlayedAd = false; ((PlayAlbumController)playController).play(video); }else { BasePlayActivity.launch(getActivity(), playController.aid, playController.vid); } } }; /** * 播放 * */ private OnItemClickListener gridItemClickListenerForPlay = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Video video = playController.videos.get(playController.curPage).get(position); if(playController instanceof PlayAlbumController){ ((PlayAlbumController)playController).play(video); }else { BasePlayActivity.launch(getActivity(), playController.aid, playController.vid); } } }; @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); episodeGallery.setSelection(curPage); } /** * 集合状态和数据载入UI * */ private void handlerData() { switch (playController.videosCallBackState) { case PlayAlbumControllerCallBack.STATE_RUNNING: if (root != null) { root.loading(true); } break; case PlayAlbumControllerCallBack.STATE_FINISH: if (root != null) { createVideos(); } break; case PlayAlbumControllerCallBack.STATE_NET_NULL: if (root != null && playController.videos == null || playController.videos.size() == 0) { root.error(R.string.get_data_error); } break; case PlayAlbumControllerCallBack.STATE_NET_ERR: if (root != null && playController.videos == null || playController.videos.size() == 0) { root.error(R.string.get_data_error); } break; case PlayAlbumControllerCallBack.STATE_DATA_NULL: if (root != null && playController.videos == null || playController.videos.size() == 0) { root.error(R.string.get_data_error); } case PlayAlbumControllerCallBack.STATE_OTHER: if (root != null) { if (playController.isList) { createVideosList(); } else { createVideosGrid(); } } break; } } @Override public void notify(int state) { createEpisode(); handlerData(); } @Override public void requestDetails(long cid, String vid) { } @Override public void setCurPage(int curPage) { if(episodeAdapter!=null){ episodeAdapter.setCurPage(curPage); } } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } }