• 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"/>

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

    效果图:

  • 相关阅读:
    Java单例模式深入详解
    深入理解Java的接口和抽象类
    java中为什么要给类使用代理?它有哪些好处?
    Log4j--java日志
    Log4j rootLogger配置
    selenium之 下拉选择框Select
    关于弹框
    spring controller接口中,用pojo对象接收页面传递的参数,发现spring在对pojo对象赋值时,有一定顺序的问题
    navicat mysql报错误:2013 Lost connection to MySQL server during query
    记录一次mysql导入千万条测试数据过慢的问题!
  • 原文地址:https://www.cnblogs.com/wxmwanggood/p/11750689.html
Copyright © 2020-2023  润新知