APP导航使用短视频来播放

来源:互联网 发布:淘宝达人直播申请 编辑:程序博客网 时间:2024/04/25 08:54
  

刚开始看到效果的时候感觉相当炫酷,翻看完别的之后感觉还是不错!今天有幸分享:

         
我们想达到这种效果需明白用什么来播放视频以及视频的资源该放到哪里?

     
第一我们通过使用自定义videoView来使视频充满屏幕,自定义一个类继承VideoView重写三个构造方法和onMeasure()方法来测量宽高。如下代码:

@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {    super.onMeasure(widthMeasureSpec, heightMeasureSpec);    //我们重新计算高度    int width = getDefaultSize(0, widthMeasureSpec);    int height = getDefaultSize(0, heightMeasureSpec);    setMeasuredDimension(width, height);}
如果我们想滑动视频的切换我们就需要用ViewPager来形成导航,在布局中我们书写如下代码:注意我们应该使用相对布局Relativelauyout。让小圆点放在我们的视频之上!

 <android.support.v4.view.ViewPager     android:id="@+id/vp"     android:layout_width="match_parent"     android:layout_height="match_parent"> </android.support.v4.view.ViewPager><LinearLayout    android:layout_width="match_parent"    android:layout_height="30dp"    android:id="@+id/lin"    android:gravity="center"    android:orientation="horizontal"    android:layout_alignParentBottom="true"    android:layout_marginBottom="100dp"    ></LinearLayout>   准备视频资源放到res/raw文件下,raw需要我们自己去创建。
"android.resource://"+ getPackageName()+"/"+R.raw.guide_1
这种方式来取出视频所存放的资源,同时添加进集合
List<Uri> list=new ArrayList<>();
list.add(Uri.parse("android.resource://"+ getPackageName()+"/"+R.raw.guide_1));list.add(Uri.parse("android.resource://"+ getPackageName()+"/"+R.raw.guide_2));list.add(Uri.parse("android.resource://"+ getPackageName()+"/"+R.raw.guide_3));创建我们的viewpager的适配器来播放视频
在适配器中书写如下代码进行播放:
@Overridepublic Object instantiateItem(ViewGroup container, int position) { //创建我们直接定义的VideoView对象final ViewMy my=new ViewMy(MainActivity.this);   //给其添加路径 my.setVideoURI(list.get(position)); //启动播放my.start();// 通过监听来让其进行无限播放 my.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {        @Override        public void onCompletion(MediaPlayer mediaPlayer) {            my.start();        }    });    container.addView(my);    return my;}
添加小圆的代码如下就不一一解释了,望我的分享能够帮助到大家! 天生爱分享
private void initData() { 动态生成小圆点if(list!=null){        for (int i=0;i<list.size();i++){            View view=new View(this);            view.setBackgroundResource(R.drawable.shape);            LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(10,10);            params.leftMargin=10;            ll.addView(view,params);            view.setTag(i);        }        View view = ll.getChildAt(0);        view.setEnabled(false);    }}
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {    @Override    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {    }    @Override    public void onPageSelected(int position) { 根据滑动来确定圆点的位置:     int childCount = ll.getChildCount();        if(position==list.size()-1){            bt.setVisibility(View.VISIBLE);        }else{            bt.setVisibility(View.GONE);        }        for (int i=0;i<childCount;i++){            View view = ll.getChildAt(i);            view.setEnabled(i==position?false:true);        }    }    @Override    public void onPageScrollStateChanged(int state) {    }});
小圆点在drawble文件下
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/shape_bai" android:state_enabled="true"></item><item android:drawable="@drawable/shape_haung" android:state_enabled="false"></item></selector>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"><solid android:color="@android:color/white"    ></solid>    <size android:width="10px" android:height="10px"></size></shape>