我正在为HonyComb
创建一个应用程序,我必须在其中显示视频和视频列表。
为此,我创建了两个片段,一个用于显示视频,另一个用于videoList。当用户点击视频列表时,该视频应该开始在其他片段的videoview
中播放。
我创建了自定义expandablelist
来显示videoList(我的视频被分类为组)。我必须显示已使用imageview
和两个textview
创建布局的视频图像,标题和说明。我可以显示视频列表。现在我被困在两点:
onChildCLick()
,但可以调用onTouch()
和onGroupClick()
。VideoView
时,我想全屏播放视频。我不知道如何实现它。请帮帮我..
fragment_layout.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>
MyActivity .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);
}
}
VideoFragment.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;
}
}
答案 0 :(得分:2)
请从ListFragment(正确方式)扩展VideoListFragment,您可以在其中直接设置适配器,可以收听listitemclick事件等,这将有助于解决您的问题。
为此,您可以浏览this教程。
然后解决你的第二个问题(点击时的全屏视图):
当用户触摸视频部分两次(点击)时(你可以在ontouchlistener和计时器的帮助下检查是否发生了连续触摸),拨打另一个活动,在视图部分,全屏设计视图。因此,当用户点击回来时,它将返回到片段活动。