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);