android动态曲线
㈠ android 温度曲线图并可以动态更新
用图标引擎就好了,AChartEngine这个,用的比较多,很简单。。。
㈡ android 使用canvas画线,如何保证快速画出圆滑的曲线
[mw_shl_code=java,true] RectF rect = new RectF(0, 0, radii, radii); // 圆形弧度需要的区域(左上角的x,y坐标 ,及右下角x,y坐标) Paint paint = new Paint(); paint.setColor(r.getColor(R.color.bg_color_1)); canvas.drawCircle(radii/2, radii/2, radii/2, paint);[/mw_shl_code]
㈢ android中这样的曲线要怎么绘制
推荐你几个相关开源项目,可以根据需要自己选择,自己画还是比较麻烦的:
MPAndroidChart
强大的图表绘制工具,支持折线图、面积图、散点图、时间图、柱状图、条图、饼图、气泡图、圆环图、范围(高至低)条形图、网状图及各种图的结合;支持图的拖拽缩放;支持 Android 2.2 以上,支持横纵轴缩放,多指缩放,展现动画、高亮、保存到 sdcard、从文件读取图表
achartengine
强大的图表绘制工具,支持折线图、面积图、散点图、时间图、柱状图、条图、饼图、气泡图、圆环图、范围(高至低)条形图、拨号图/表、立方线图及各种图的结合
GraphView
绘制图表和曲线图的View,可用于Android上的曲形图、柱状图、波浪图展示
HoloGraphLibrary
绘制线状图、柱状图、饼状图
XCL-Charts
XCL-Charts基于原生的Canvas来绘制各种图表,在设计时,尽量在保证开发效率的同时,给使用者提供足够多的定制化能力。因此使用简便,同时具有相当灵活的定制能力。目前支持3D/非3D柱形图(Bar Chart)、3D/非3D饼图(Pie Chart)、堆积图(Stacked Bar Chart)、面积图(Area Chart)、 折线图(Line Chart)、曲线图(Spline Chart)、环形图(Dount Chart)、南丁格尔玫瑰图(Rose Chart)、仪表盘(Dial Chart)、刻度盘(Gauge Chart)、雷达图(Radar Chart)、圆形图(Circle Chart)等图表。其它特性还包括支持图表缩放、手势移动、动画显示效果、高密度柱形显示、图表分界定制线、多图表的混合显示及同数据源不同类型图表切换等。
EazeGraph
Android 图表库,支持柱状图、分层柱状图、饼状图、线性图
WilliamChart
绘制图表的库,支持LineChartView、BarChartView和StackBarChartView三中图表类型,并且支持 Android 2.2及以上的系统。
HelloCharts for Android
支持折线图、柱状图、饼图、气泡图、组合图;支持预览、放大缩小,滚动,部分图表支持动画;支持 Android 2.2 以上
这些项目都可以在GitHub 搜索到。
㈣ Android绘图之Canvas变换(6)
前面讲解了Canvas的基本概念, Android绘图之Canvas概念理解(5) ,
对Canvas的概念进行了分析,但是没有说明和屏幕的关系,Canvas不等于屏幕,屏幕不会动的,我们也无法对屏幕进行(平移,缩放等)操作,只能对Canvas进行操作,所以对Canvas进行操作,屏幕不动,最终会导致看到的图像不同。
下面开始讲解Canvas的变幻操作:
包括:translate,rotate,scale,skew,clip,clipout,matrix
先从最简单的平移开始:
对Canvas进行平移,
dx: x轴方向进行平移,正值向屏幕右侧
dy:y轴方向进行平移,正值向屏幕下方
绘制两个点查看原点位置。
原点显然改变了,以后再绘制任何形状都是以translate后的原点开始绘制。
参数说明
sx:横向的缩放,默认为1,小数缩小,整数放大
sy:纵向的缩放,默认为1,小数缩小,整数放大
px,py,看源码知道是先translate,执行sx,sy然后再translate反方向。
第二次translate的坐标为(-px sx,-px sy),最终的效果就是px,py是缩放后不动的点。
缩放后坐标减半。
如果想控制缩放后的位置,如何控制呢,这就需要第二个函数。
还可以控制其他位置,例如控制缩放后在中心。
rotate有两个函数:
rotate(float degrees)
rotate(float degrees, float px, float py)
Degree:旋转的角度,正值为顺时针,负值为逆时针
Px,py:旋转的中心,如果不指定旋转中心默认为(0,0)点
指定旋转中心为矩形中心
参数说明:
sx:画布在x方向上倾斜相应的角度,sx倾斜角度的tan值,
sy:画布在y轴方向上倾斜相应的角度,sy为倾斜角度的tan值,
根据矩形或者路径裁剪画布,画布被切割之后,只有部分区域可用,其他区域无法绘制内容。
Clip函数切割的区域可用,clipOut未被切割的区域可用。(过时函数不再讲解)
Matrix提供了一些方法来控制变换:
android绘图之Paint(1)
android绘图之Canvas基础(2)
Android绘图之Path(3)
Android绘图之drawText绘制文本相关(4)
Android绘图之Canvas概念理解(5)
Android绘图之Canvas变换(6)
Android绘图之Canvas状态保存和恢复(7)
Android绘图之PathEffect (8)
Android绘图之LinearGradient线性渐变(9)
Android绘图之SweepGradient(10)
Android绘图之RadialGradient 放射渐变(11)
Android绘制之BitmapShader(12)
Android绘图之ComposeShader,PorterDuff.mode及Xfermode(13)
Android绘图之drawText,getTextBounds,measureText,FontMetrics,基线(14)
Android绘图之贝塞尔曲线简介(15)
Android绘图之PathMeasure(16)
Android 动态修改渐变 GradientDrawable
㈤ 有谁知道android里的Path类中的quadTo()方法是怎么实现贝塞尔曲线的吗
/**
* 画曲线(核心代码)
*
* @param startp
* 开始点
* @param endp
* 结束点
* @param canvas
* 画布
* @param paint
* 画笔
*/
private void drawCurve(Point[] points, Canvas canvas, Paint paint)
{
Point startp = new Point();
Point endp = new Point();
for (int i = 0; i < points.length - 1; i++)
{
startp = points[i];
endp = points[i + 1];
int wt = (startp.x + endp.x) / 2;
Point p3 = new Point();
Point p4 = new Point();
p3.y = startp.y;
p3.x = wt;
p4.y = endp.y;
p4.x = wt;
// 确定曲线的路径
path = new Path();
path.moveTo(startp.x, startp.y);
path.cubicTo(p3.x, p3.y, p4.x, p4.y, endp.x, endp.y);
canvas.drawPath(path, paint);
}
}
㈥ 有没有大神 用Android实现仿照Siri声波曲线
代码实现
波浪其实是由4条贝塞尔曲线组成的,可以在自定义View的onDraw函数中,用Path.quadTo函数画出4条曲线。
Path.quadTo(float x1, float y1, float x2, float y2)
其中,x1,y1为控制点的坐标值,x2,y2为终点的坐标值;当控制点的x1位于起点与终点之间时,将画出正弦曲线,此时y1控制正弦曲线的高度,即效果图中波浪的高度由y1控制。
实现了曲线绘制和高度控制之后,如何让曲线像波浪一样动起来呢?
我的解决方法是在屏幕左边,即x<0的位置,同样绘制4条正弦曲线,并且启动线程让8条曲线都向右移动,当左边4条曲线全部移动到屏幕内后,让这8条曲线复位。如此周期进行。
解析
使用方法
在xml中,
<com.tao.view.SiriView
android:id="@+id/siriView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_centerInParent="true"/>
在Activity.Java中,
SiriView siriView = (SiriView) findViewById(R.id.siriView);
// 停止波浪曲线
siriView.stop();
// 设置曲线高度,height的取值是0f~1f
siriView.setWaveHeight(0.5f);
// 设置曲线的粗细,width的取值大于0f
siriView.setWaveWidth(5f);
// 设置曲线颜色
siriView.setWaveColor(Color.rgb(39, 188, 136));
// 设置曲线在X轴上的偏移量,默认值为0f
siriView.setWaveOffsetX(0f);
// 设置曲线的数量,默认是4
siriView.setWaveAmount(4);
// 设置曲线的速度,默认是0.1f
siriView.setWaveSpeed(0.1f);