Android 使用Vitamio打造自己的万能播放器(3)――本地播放(主界面、播放列表)

Android 使用Vitamio打造自己的万能播放器(3)――本地播放(主界面、播放列表),第1张

概述前言 打造一款完整可用的Android播放器有许多功能和细节需要完成,也涉及到各种丰富的知识和内容,本章将结合Fragment、ViewPager来搭建播放器的主界面,并实现本地播放基本功能。系列文章提供截图、代码说明、

前言

 打造一款完整可用的AndroID播放器有许多功能和细节需要完成,也涉及到各种丰富的知识和内容,本章将结合Fragment、VIEwPager来搭建播放器的主界面,并实现本地播放基本功能。系列文章提供截图、代码说明、源码下载,欢迎交流!

系列

 1、AndroID @L_403_0@

 2、AndroID 使用Vitamio打造自己的万能播放器(2)―― 手势控制亮度、音量、缩放

 正文

 一、目标

  1.1 使用Fragment、VIEwPager搭建主界面

   主功能区分为:本地视频、在线视频,允许滑动切换模块

  1.2 用ListVIEw显示sdcard所有视频

  效果截图:

(声明:图标均来自网络,仅供学习研究之用!)

二、实现代码

  2.1 xml

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:orIEntation="vertical" androID:gravity="center_horizontal" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <RadioGroup androID:gravity="center_vertical" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:orIEntation="horizontal"> <Radiobutton androID:ID="@+ID/radio_file" androID:checked="true"  androID:drawabletop="@drawable/vIDeo_file" androID:text="@string/Title_file" /> <Radiobutton androID:ID="@+ID/radio_online" androID:drawabletop="@drawable/vIDeo_online"  androID:text="@string/Title_online" /> </RadioGroup> <androID.support.v4.vIEw.VIEwPager androID:background="@color/background" androID:ID="@+ID/pager" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> </androID.support.v4.vIEw.VIEwPager></linearLayout>

这是整体布局,使用Radiobutton切换本地视频和在线视频功能,具体样式请下载项目。VIEwPager支持左右侧滑切换功能。

2.2 class

   MainFragmentActivity

public class MainFragmentActivity extends FragmentActivity { private VIEwPager mPager; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.fragment_pager); mPager = (VIEwPager) findVIEwByID(R.ID.pager); mPager.setAdapter(mAdapter); } private FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { /** 仅执行一次 */ @OverrIDe public Fragment getItem(int position) { Fragment result = null; switch (position) { case 1: result = new FragmentOnline();//在线视频 break; case 0: default: result = new Fragmentfile();//本地视频 break; } return result; } @OverrIDe public int getCount() { return 2; } };}

这里是Fragment与VIEwPager结合使用的简单例子。

  Fragmentfile

public class Fragmentfile extends FragmentBase implements OnItemClickListener { private fileAdapter mAdapter; @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) { VIEw v = super.onCreateVIEw(inflater,container,savedInstanceState); mAdapter = new fileAdapter(getActivity(),null); mListVIEw.setAdapter(mAdapter); mListVIEw.setonItemClickListener(this); new ScanVIDeoTask().execute(); return v; } /** 单击启动播放 */ @OverrIDe public voID onItemClick(AdapterVIEw<?> parent,VIEw vIEw,int position,long ID) { final file f = mAdapter.getItem(position); Intent intent = new Intent(getActivity(),VIDeoVIEwDemo.class); intent.putExtra("path",f.getPath()); startActivity(intent); } /** 扫描SD卡 */ private class ScanVIDeoTask extends AsyncTask<VoID,file,VoID> { @OverrIDe protected VoID doInBackground(VoID... params) { eachAllMedias(Environment.getExternalStorageDirectory()); return null; } @OverrIDe protected voID onProgressUpdate(file... values) { mAdapter.add(values[0]); mAdapter.notifyDataSetChanged(); } /** 遍历所有文件夹,查找出视频文件 */ public voID eachAllMedias(file f) { if (f != null && f.exists() && f.isDirectory()) { file[] files = f.Listfiles(); if (files != null) { for (file file : f.Listfiles()) { if (file.isDirectory()) { eachAllMedias(file); } else if (file.exists() && file.canRead() && fileUtils.isVIDeoOrAudio(file)) { publishProgress(file); } } } } } } private class fileAdapter extends ArrayAdapter<file> { public fileAdapter(Context ctx,ArrayList<file> l) { super(ctx,l); } @OverrIDe public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) { final file f = getItem(position); if (convertVIEw == null) { final LayoutInflater mInflater = getActivity().getLayoutInflater(); convertVIEw = mInflater.inflate(R.layout.fragment_file_item,null); } ((TextVIEw) convertVIEw.findVIEwByID(R.ID.Title)).setText(f.getname()); return convertVIEw; } }} 

代码说明:

   a).  这里是本章的主要功能,扫描所有视音频文件,并显示出来。

   b).  ArrayAdapter和fileUtils这里不一一贴代码,主要是工具和辅助类,请下载项目查看。

   c).  注意:mAdapter.add *** 作应放到主线程中,否则可能出错。

 以上就是对AndroID Vitamio本地播放的资料整理,后续继续补充谢谢。

总结

以上是内存溢出为你收集整理的Android 使用Vitamio打造自己的万能播放器(3)――本地播放(主界面、播放列表)全部内容,希望文章能够帮你解决Android 使用Vitamio打造自己的万能播放器(3)――本地播放(主界面、播放列表)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1142130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存