android 播放跳动

Posted wxmwanggood

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 播放跳动相关的知识,希望对你有一定的参考价值。

参照网上的例子,贴出代码:

package com.example.recycler;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;

import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

/**
 * Created by fengan on 2017/10/25/025.
 */

public class AudioColumnView extends View {
    private int columnNum = 4;
    private int random;
    private boolean isStart = true;
    private Random mRandom;
    private int mRect_t1;
    private int mRect_t2;
    private int mRect_t3;
    private int mRect_t4;
    //private int mRect_t5;
    private Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0x1234) {
                invalidate();
            }
        }
    };
    private Paint mPaint;
    private int mWidth;
    private int mHeight;
    private double mRect_w;
    private RectF r1;
    private RectF r2;
    private RectF r3;
    private RectF r4;
    private RectF r5;
    public AudioColumnView(Context context) {
        this(context, null);
    }

    public AudioColumnView(Context context, AttributeSet attrs) {
        this(context, attrs, -1);
    }

    public AudioColumnView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        mRandom = new Random();
        mPaint = new Paint();
        mPaint.setColor(Color.WHITE);
        mPaint.setStyle(Paint.Style.FILL);
        r1 = new RectF();
        r2 = new RectF();
        r3 = new RectF();
        r4 = new RectF();
        //r5 = new RectF();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        mWidth = MeasureSpec.getSize(widthMeasureSpec);
        mHeight = MeasureSpec.getSize(heightMeasureSpec);
        mRect_w = mWidth/(2*columnNum+1);
        random =mHeight / 4;
    }

    public void start(){
        isStart = true;
        invalidate();
    }

    public void stop(){
        isStart = false;
        invalidate();
    }

    public boolean isStart(){
        return isStart;
    }


    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (isStart) {
            new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    mRect_t1 = mRandom.nextInt(random);
                    mRect_t2 = mRandom.nextInt(random);
                    mRect_t3 = mRandom.nextInt(random);
                    mRect_t4 = mRandom.nextInt(random);
                    //mRect_t5 = mRandom.nextInt(random);
                    mHandler.sendEmptyMessage(0x1234);
                }
            },300);
        }
        //画柱状;动态图,就要改变柱状的top值
        r1.set((float) (mRect_w),mRect_t1*4,(float)( mRect_w*2),(float) (mHeight*0.9));
        r2.set((float) (mRect_w*3),mRect_t2*4,(float)(mRect_w*4),(float) (mHeight*0.9));
        r3.set((float) (mRect_w*5),mRect_t3*4,(float)(mRect_w*6),(float) (mHeight*0.9));
        r4.set((float) (mRect_w*7),mRect_t4*4,(float)( mRect_w*8),(float) (mHeight*0.9));
        //r5.set((float) (mRect_w*9),mRect_t5*5,(float)(mRect_w*10),(float) (mHeight*0.9));
        canvas.drawRect(r1,mPaint);
        canvas.drawRect(r2,mPaint);
        canvas.drawRect(r3,mPaint);
        canvas.drawRect(r4,mPaint);
        //canvas.drawRect(r5,mPaint);
    }
}

在XML中这样布局:

    <com.example.recycler.AudioColumnView
        android:id="@+id/acv"
        android:visibility="gone"
        android:layout_marginLeft="26px"
        android:layout_marginTop="30px"
        android:layout_width="27px"
        android:layout_gravity="center_horizontal"
        android:background="@android:color/transparent"
        android:layout_height="26px"/>

年纪大了,记性不好。。。

效果图:

 

以上是关于android 播放跳动的主要内容,如果未能解决你的问题,请参考以下文章

播放android studio时片段中的VideoView没有声音

Android 7 上的 VideoView 错误

Android主流视频播放及缓存实现原理调研

Android - 通过 FragmentManager 替换片段后,片段返回到它们的第一个状态

Android:如何从资产中播放视频?

如何在列表视图中添加最近播放的歌曲?