自定义view,仿音频播放条
来源:互联网 发布:skyworth怎么连接网络 编辑:程序博客网 时间:2024/05/18 21:08
首先看一下效果图,不太会用动态的,就将就看一下图吧
这个一般适用于网络加载数据,网慢时,出现的小动画,
由于是音频条,所以在音乐播放器的项目中常用,
我也是在做音乐类项目的时候,找的这个
其实很简单 , 只需要一个自定义view就好
下面就是我写的自定义view
import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.LinearGradient;import android.graphics.Paint;import android.graphics.Shader;import android.util.AttributeSet;import android.util.Log;import android.view.View;/** * 自定义view * 作者:聂 */public class AudioView extends View{ private int width; private int height; private int rectCount = 10; private Paint paint; private int offset; private int rectWidth; public AudioView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //画矩形 for (int i=0;i<rectCount;i++) { canvas.drawRect((float)(width*0.1+rectWidth*i+offset), (float)getRectHight(), (float)(width*0.1+rectWidth*(i+1)), (float)height, paint); } postInvalidateDelayed(300);//300毫秒刷新 } private double getRectHight() { double h = 0; h = Math.random()*height; return h; } private void init() { paint = new Paint(); paint.setColor(Color.RED); rectWidth = width/15; offset = width/30; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub super.onMeasure(widthMeasureSpec, heightMeasureSpec); width = measureWidth(widthMeasureSpec);//得到View的宽 height = measureHight(heightMeasureSpec);//得到View的高 setMeasuredDimension(width,height); init();//初始化 } private int measureWidth(int widthMeasureSpec) { int result = 0; int specMode = MeasureSpec.getMode(widthMeasureSpec); int specSize = MeasureSpec.getSize(widthMeasureSpec); if (specMode == MeasureSpec.EXACTLY) { result = specSize; } else { result = 200; if (specMode == MeasureSpec.AT_MOST) { result = Math.min(result, specSize); } } return result; } private int measureHight(int heightMeasureSpec) { int result = 0; int specMode = MeasureSpec.getMode(heightMeasureSpec); int specSize = MeasureSpec.getSize(heightMeasureSpec); if (specMode == MeasureSpec.EXACTLY) { result = specSize; } else { result = 200; if (specMode == MeasureSpec.AT_MOST) { result = Math.min(result, specSize); } } return result; }}自定义view完了就可以在main里面直接调用就好了
<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <com.example.dell.zidingyidh.AudioView android:layout_width="match_parent" android:layout_height="match_parent" /> <com.example.dell.zidingyidh.AudioView android:layout_width="100dp" android:layout_height="100dp" /></FrameLayout>这里一定要注意的就是要写自己的包名
com.example.dell.zidingyidh.AudioView
本demo为转载的,
希望对各位老铁有帮助
阅读全文
0 0
- 自定义view,仿音频播放条
- 自定义View之音频播放圆形进度条
- 自定义View之动态音频条
- 自定义View系列:高仿“淘宝头条”
- 自定义音频播放器
- 自定义音频条
- 仿太极图自定义view
- 仿 淘宝头条热点 天猫头条热点 京东头条热点的自定义view 实现
- Android自定义控件----高仿Android酷狗播放条(YluoSeekBar)
- 自定义View 滚动条
- Android自定义View——仿1号店垂直滚动广告条实现
- Android自定义View——仿1号店垂直滚动广告条实现
- 自定义View之仿今日头条颜色渐变指示器导航栏
- 仿 iPhone Assistivetouch 自定义view
- 自定义View仿小米钟表
- 仿系统TextView自定义View
- android 自定义view仿通讯录
- 自定义View-仿Flipboard动画
- [微机原理]补码运算原理
- centos7安装shipyard没有本地容器及镜像
- 转载致谢声明
- Unity3d 学习记录
- Unity选服列表的逻辑
- 自定义view,仿音频播放条
- 日期工具类
- MyBatis之对表执行CRUD操作——基于XML的实现
- 删除指定的字符
- PL/SQL之十 包
- 正则表达式匹配规则
- 分类器简单介绍
- CNN卷积网络设计的理解点
- caffe的安装