1

HonyCombビデオとビデオリストを表示する必要があるアプリケーションを作成しています。このために、2つのフラグメントを作成しました。1つはビデオを表示するためのもので、もう1つはvideoList用です。ユーザーがビデオリストをクリックすると、そのビデオはvideoview他のフラグメントで再生を開始するはずです。

expandablelistvideoListを表示するためのカスタムを作成しました(私のビデオはグループに分類されているため)。imageviewと2つのレイアウトを作成したビデオ画像、タイトル、説明をtextview表示する必要があります。ビデオリストを表示できます。今、私は2つのポイントで立ち往生しています:

  1. ビデオリストをクリックすると、ビデオを再生できません。onChildCLick()は呼び出されませんが、呼び出されるonTouch()ことonGroupClick()ができます。
  2. ユーザーがをタップしたときにビデオを全画面で再生したいVideoView。それを実装する方法がわかりません。

私を助けてください..

  1. 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>
    
  2. 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);
    }
    
    }
    
  3. 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();
     } 
    }
    
  4. 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;
        }
    });
    }
    
  5. 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;
    }
    
    }
    
4

1 に答える 1

2

ListFragment(適切な方法)からVideoListFragmentを拡張してください。ここでは、アダプターを直接設定したり、listitemclickイベントなどを聞いたりして、問題の解決に役立てることができます。

そのために、このチュートリアルを実行できます。

次に、2番目の問題(タップしたときの全画面表示)を解決するために:

ユーザーがビデオ部分に2回タッチしたとき(タップ)(ontouchlistenerとタイマーを使用して連続タッチが発生したかどうかを確認できます)、別のアクティビティを呼び出し、ビュー部分でフルスクリーンビューを設計します。したがって、ユーザーがクリックして戻ると、フラグメントアクティビティに戻ります。

于 2012-08-30T13:54:03.667 に答える