我正在创建一个应用程序HonyComb
,我必须在其中显示视频和视频列表。为此,我创建了两个片段,一个用于显示视频,另一个用于 videoList。当用户单击视频列表时,该视频应该开始videoview
在其他片段中播放。
我创建了expandablelist
用于显示 videoList 的自定义(因为我的视频被归类为组)。我必须显示视频图像、标题和描述,我已经为其创建了一个imageview
和两个布局textview
。我能够显示视频列表。现在我被困在两点:
- 单击视频列表时,我无法播放视频。
onChildCLick()
没有被调用,但onTouch()
能够onGroupClick()
被调用。 - 我想在用户点击时全屏播放视频
VideoView
。我不知道如何实现。
请帮我..
片段布局.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <fragment android:id="@+id/detailFragment" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" class="com.abs.qpr.VideoFragment" > </fragment> <fragment android:id="@+id/listFragment" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="0.6" class="com.abs.qpr.VideoListFragment" > </fragment> </LinearLayout>
我的活动.java
import android.os.Bundle; public class MyActivity extends android.support.v4.app.FragmentActivity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_layout); } }
视频片段.java
import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; public class VideoFragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d("VideoFragment", "On Create View"); View view = inflater.inflate(R.layout.activity_my_video, container, false); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } public void playVideo() { VideoView myVideoView2= (VideoView)getView().findViewById(R.id.my_tecnique_video); String temp="android.resource://" + getActivity().getApplicationContext().getPackageName() + "/" + R.raw.back_circles; System.out.println(temp + ": " + getActivity().getApplicationContext()); Uri video = Uri.parse("android.resource://" + getActivity().getApplicationContext().getPackageName() + "/" + R.raw.back_circles); myVideoView2.setVideoURI(video); myVideoView2.setMediaController(new MediaController(getActivity())); myVideoView2.requestFocus(); myVideoView2.start(); } }
VideoListFragment.java
public class VideoListFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.e("VideoFragment", "On Create View"); View view = inflater.inflate( R.layout.activity_my_techniques_video_list, container, false); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.e("VideoListFragment", "On Activity Created "); ExpandableListView expList = (ExpandableListView) getView() .findViewById(R.id.my_tech_video_listview); expList.setAdapter(new VideoExpandableListAdapter(getActivity())); expList.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView expandablelistview, View view, int i, int j, long l) { // TODO Auto-generated method stub Log.d("Checking.....", "onGroupClick()"); VideoFragment fragment = (VideoFragment) getFragmentManager() .findFragmentById(R.id.detailFragment); if (fragment != null && fragment.isInLayout()) { fragment.playVideo(); } else { Intent videointent = new Intent(getActivity() .getApplicationContext(), VideoActivity.class); startActivity(videointent); } return false; } }); }
VideoExpandableListAdapter.java
public class VideoExpandableListAdapter extends BaseExpandableListAdapter{ private Context myContext; ArrayList<VideoListVO> videoListVO; public VideoExpandableListAdapter(Context context) { myContext = context; } @Override public Object getChild(int groupPosition, int childPosition) { // TODO Auto-generated method stub return null; } @Override public long getChildId(int groupPosition, int childPosition) { // TODO Auto-generated method stub return 0; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) myContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.childrow, null); } VideoListVO vlvo= videoListVO.get(groupPosition); VideoDetailsVO vdvo=vlvo.getVideoDetailList().get(childPosition); InputStream is = null; try { String imageName=vdvo.getImageName(); imageName="images/"+imageName+".png"; is = myContext.getResources().getAssets().open(imageName); } catch (IOException e) { Log.w("EL", e); } Bitmap image = BitmapFactory.decodeStream(is); ImageView ib2 = (ImageView) convertView.findViewById( R.id.video_image); ib2.setImageBitmap(image); TextView titleText=(TextView)convertView.findViewById(R.id.video_title_text); titleText.setText(vdvo.getVideoTitle()); TextView descriptionText=(TextView)convertView.findViewById(R.id.video_description); descriptionText.setText(vdvo.getVideoDescription()); return convertView; } @Override public int getChildrenCount(int groupPosition) { // TODO Auto-generated method stub return videoListVO.get(groupPosition).getVideoDetailList().size(); } @Override public Object getGroup(int groupPosition) { // TODO Auto-generated method stub return null; } @Override public int getGroupCount() { // TODO Auto-generated method stub return videoListVO.size(); } @Override public long getGroupId(int groupPosition) { // TODO Auto-generated method stub return 0; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.group_row, null); } TextView tvGroupName = (TextView) convertView.findViewById(R.id.tvgrpname); tvGroupName.setText(videoListVO.get(groupPosition).getVideoType()); return convertView; } @Override public boolean hasStableIds() { // TODO Auto-generated method stub return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { // TODO Auto-generated method stub return true; } }