作者:阿悅11 | 来源:互联网 | 2023-10-11 13:13
最近项目上要实现语音搜索功能,界面样式要模仿一下UC浏览器的样式,UC浏览器中有一个控件,会随着声音大小浮动,然后寻思偷个懒,百度一下,结果也没有找到类似的,只能自己动手了。
先上图看我实现的效果:
这是自定义控件的代码,里面注释也很明白,就不费话了
public class CustomCircleView extends View{
private Paint mPaint;
private int strokeWidth = 0; //圆环的宽度
private Bitmap bitmap = null; // 图片位图
private int nBitmapWidth = 0; // 图片的宽度
private int nBitmapHeight = 0; // 图片的高度
private int width; //view的宽度
private int height ; //view的高度
private int bigCircleColor =0; //view的高度
private int floatCircleColor =0; //view的高度
public CustomCircleView(Context context) {
this(context, null);
}
public CustomCircleView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomCircleView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CustomCircleView, defStyleAttr, 0);
int n = a.getIndexCount();
for (int i = 0; i
在res/values 下建一个attrs文件 代码:
在布局中的使用:
高度宽度一定要给精确值,切记啊!!!颜色值可以不设定,默认就是我上面图的效果。
然后根据音量大小直接传入数值就可以了,很简单的使用方法,这里我用随机数代替了。
customView = ((CustomCircleView) findViewById(R.id.customView));
button = ((Button) findViewById(R.id.button));
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Random random=new Random();
customView.setStrokeWidth(random.nextInt(100));
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程笔记。