Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷


是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很简单,就一个官方自带的VideoView就可以实现了,但是官方的空间有个弊端就是不能全屏,及时你设置了match_parent也不行,有些手机上就有黑边,这里我们现在res目录下新建一个raw文件夹,然后把我们要播放的视频放进去,我们这里只是做了一个循环播放视频的效果,首先我们重写下VideoView,啥也不干,就是让他铺满屏幕,这个方法也是看到某网站的一个教学视频,不过再怎么说也是非分简单,视频素材也是直接拿过来用的,不打广告哈….

CustomVideoView

package com.lgl.mp4index;

import android.content.Context;
import android.media.MediaPlayer;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.widget.VideoView;

/**
 * 视频播放,主要是因为手机的大小很多,不能保证原生的VideoView能实现全屏
 * Created by lgl on 16/2/18.
 */
public class CustomVideoView extends VideoView {

    public CustomVideoView(Context context) {
        super(context);
    }

    public CustomVideoView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomVideoView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //我们重新计算高度
        int width = getDefaultSize(0, widthMeasureSpec);
        int height = getDefaultSize(0, heightMeasureSpec);
        setMeasuredDimension(width, height);
    }

    @Override
    public void setOnPreparedListener(MediaPlayer.OnPreparedListener l) {
        super.setOnPreparedListener(l);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        return super.onKeyDown(keyCode, event);
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.lgl.mp4index.CustomVideoView
        android:id="@+id/videoview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <Button
        android:id="@+id/btn_start"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="56dp"
        android:text="进入" />
</RelativeLayout>

MainActivity

package com.lgl.mp4index;

import android.media.MediaPlayer;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private CustomVideoView videoview;
    private Button btn_start;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    /**
     * 初始化
     */
    private void initView() {
        btn_start = (Button) findViewById(R.id.btn_start);
        btn_start.setOnClickListener(this);

        videoview = (CustomVideoView) findViewById(R.id.videoview);
        //设置播放加载路径
        videoview.setVideoURI(Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.media));
        //播放
        videoview.start();
        //循环播放
        videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                videoview.start();
            }
        });

    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_start:
                Toast.makeText(this,"进入了主页",Toast.LENGTH_SHORT).show();
            break;
        }
    }
}

就是这么的简单…..不要说我这个帖子水哦,我们来运行一下

Demo就不上传了,就这么点代码…

最新文章

  1. 1051. Pop Sequence
  2. jquery.zclip轻量级复制失效问题
  3. 2016年最佳Linux发行版排行榜
  4. Yii2的深入学习--自动加载机制(转)
  5. ASP.NET Web API 学习【转】
  6. POJ 2175 Evacuation Plan 费用流 负圈定理
  7. android120 zhihuibeijing 开机页面
  8. 226. Invert Binary Tree(C++)
  9. iOS-MVVM--备用
  10. Git commit template 模板设定
  11. wiki oi3117 高精度练习之乘法
  12. java注解(基础)
  13. 第十一章 泛型算法 C++ PRIMER
  14. 从PRISM开始学WPF(四)Prism-Module?
  15. Java数据结构和算法 - 哈希表
  16. MyBatis3系列__01HelloWorld
  17. DataTable2JSON 和 DataTable2Class 性能比较
  18. 使用gulp和browser-sync实现浏览器自动刷新
  19. 微信小程序开发工具的基本应用
  20. JDK自带的运行监控工具JConsole观察分析Java程序的运行

热门文章

  1. JAVA面向对象-----成员内部类访问细节
  2. Android简易实战教程--第三十一话《自定义土司》
  3. [Ubuntu] 14.04 关闭桌面
  4. 剑指Offer——完美+今日头条笔试题+知识点总结
  5. java之IO流详解(二)
  6. Android获得控件在屏幕中的绝对坐标
  7. JVM常量池和八种基本数据及字符串
  8. Android初级教程初谈自定义view自定义属性
  9. 看人装X,我就来气,开启极限装X模式
  10. Oracle Apps DBA 常用命令