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


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


    是不是感觉QQ空间什么的每次新版本号更新那炫炫的引导页就特别的激动,哈哈。事实上他实现起来真的非常easy非常easy。就一个官方自带的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就不上传了。就这么点代码…

  • 相关阅读:
    私有 composer 包创建
    随机数是如何生成的
    TCP 三次握手的意义
    何为真何为假
    Python流程控制语句详解
    Python类中装饰器classmethod,staticmethod,property,
    函数进阶
    初识函数
    文件操作
    is ==小数据池编码解码
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7228377.html
Copyright © 2020-2023  润新知