android畫曲線
⑴ 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貝塞爾曲線動畫底部超出屏幕
系統故障。Android貝塞爾曲線解析介紹說明,android貝塞爾曲線動畫,底渣芹部超出屏幕是系統故障導致,游慧重新安裝神梁答系統即可恢復。貝塞爾曲線,又稱貝茲曲線或貝濟埃曲線,是應用於二維圖形應用程序的數學曲線,矢量圖形軟體通過來精確畫出曲線,貝茲曲線由線段與節點組成。
⑶ 在android屏幕上任意一條曲線,怎樣獲取軌跡中重要的點
首先找到這條直線的所有點,然後開啟一個線程循環獲取點,橘此用Handle發困伍肆送汪轎消息去畫線
@Override
public void run() {
try {
for(int i = 0 ; i < myPointList.size(); i++)
{
MyPoint myPoint = myPointList1.get(i);
Message message = Message.obtain();
message.what = 2;
message.obj = myPoint;
mHandler.sendMessage(message);
Thread.sleep(100);
}
} catch (Exception e) {
e.printStackTrace();
}
}
⑷ Android中Path類的lineTo方法和quadTo方法畫線的區別
Path--->quadTo(float x1, float y1, float x2, float y2):
該方法的實現是當畫弧線時會形成平滑的曲線,該曲線又稱為"貝塞爾曲線"(Bezier curve),其中,x1,洞桐蠢y1為控制點的坐標值,x2,y2為終點的坐標值;
貝塞爾曲線的形成,就比如把一條橡皮筋拉直,橡皮筋的頭尾部對應起點和終點,然後從拉直的橡皮筋中選擇任意一點(除頭尾對應的點外)扯動橡皮筋形成的彎曲形狀,而那個扯動橡皮納陪筋的點就是控制點。
2. Path--->lineTo(float x, float y) :
該方法實現的僅僅是輪擾兩點連成一線的繪制線路,這樣,當用這個方法繪制曲線時,缺陷就出來了。對比前面quadTo方法lineTo方法繪制的曲線不能形成平滑的彎曲,會出現明顯的兩點形成一線的突痕。
⑸ 請問Android如何畫光滑的曲線圖
繪制曲線圖首先需要畫好橫豎坐標軸建立坐標系,比如坐標系中的100距離應該在canvas中繪制多長,這個是需要計算的,其實悶運坐標體系的建立是最復雜的,我看過很多第三方庫的建立方法都不一樣,有的要靈活一些,有的比較死板。至於繪制曲線要麼是用Canvas.drawLine方法,要麼是用Path.lineTo方法,看你自己的習慣。
為了做出一個外觀良好的曲線圖,我參考了兩個開源代碼,第一個的曲線圖繪制限制較多,使用范圍太窄,但是有數據變化時的動畫效果。第二個的適用范圍很廣,他能根據數據集合自動計算橫縱坐標的個數,在canvas上單元格的距離,只需輸入坐標點就能自動建立坐標體系繪制曲線,但是沒有動畫效果。
先講第一個LineView。
LineView的demo可以在這里下載,lineview其實只是github項目的一部分,我是將其提取出來了的,個人覺得他的其他部分沒有參考價值。作者好像是個韓國人。
LineView的曲線繪制沒有什麼可取的部分,我想學習的是他實現動畫效果的方法,設計的很好,但具體實現還需要改進,讓動畫更流暢。
Lineview的調用方法:
在xml中添加lineview控制項
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/horizontalScrollView"
android:layout_alignParentRight="true"
android:layout_above="@+id/line_button">
<view
android:layout_width="wrap_content"
android:layout_height="200dp"
class="com.example.widget.LineView"
android:id="@+id/line_view"/>
</HorizontalScrollView>
在activity代碼中獲取lineview對象:
finalLineView lineView = (LineView)findViewById(R.id.line_view);
添加橫坐標:
intrandomint=9;
ArrayList<String>test=newArrayList<String>();
for(inti=0;i<randomint;i++){
test.add(String.valueOf(i+1));
}
lineView.setBottomTextList(test);
允許繪制坐標點:
lineView.setDrawDotLine(true);
lineView.setShowPopup(LineView.SHOW_POPUPS_NONE);
ArrayList<Integer>dataList=newArrayList<Integer>();
intrandom=(int)(Math.random()*9+1);
for(inti=0;i<randomint;i++){
dataList.add((int)(Math.random()*random));
}
添加縱坐標的值:
ArrayList<ArrayList<Integer>>dataLists=newArrayList<ArrayList<Integer>>();
dataLists.add(dataList);
lineView.setDataList(dataLists);
從其用法中可以看出,lineview需要提前設定橫坐標的范圍,而且縱坐標的值必須和lineView.setBottomTextList(test)中添加的值一一對應(讀lineview源碼可以知道),使用起來很不方便,我覺源臘得作者僅僅是做出了一條曲線而已,而不太關注螞裂梁是否有用。和很多曲線圖的開源代碼一樣lineview允許一次繪制幾根顏色不同的曲線。
只需在上面的代碼中為dataLists再添加一個list成員就行。
⑹ 如何用android顯示實時曲線求方法,代碼
1. 網格背景,心電圖的原理比較簡單,首先繪制一個背景,就是網格就以Windows下的任務管理器來說吧,下面綠色的網格是固定的,如果你比較懶或者考慮繪制效率你甚至可以直接使用一個背景圖片代替,當然代碼繪制效率沒有什麼問題,直接使用Canvas的drawLine方法即可。由兩個for循環控制著橫縱坐標,當然Android123推薦大家使用drawLines參數直接是一個數組。
2. K線圖,對於真正的曲線或者說K線圖,其實就是描點畫圖了,在Android中我們自繪控制項中重寫onDraw方法,onDraw的形參Canvas提供了drawPoint(float x,float y,Point point) 。這三個參數前兩個正好對應橫豎坐標,第三個參數為Point對象,可以控制畫筆的顏色、粗細和類型。如果是動態的,你需要使用一個計時器,最簡單的使用Handler的postDelay方法,使用一個數組動態保存著每個點即可。
⑺ Android版的墨跡天氣裡面的曲線圖是怎麼做的
沒有這樣的View(控制項),只能自己繪制或者創建自定義View。
其實畫這種拆線是很容易的,自己搜一下,有很詳細的教程,我就不在這里貼一堆網上的代碼了。
⑻ Android 曲線圖 繪制曲線
首先我們看看onDrwa 裡面做了什麼 從圖裡面笑沖我們可看到 繪制的框線方法,繪制data線方法 繪制線激老上的圓
從明升升最上面的圖效果來看我們不需要圓 也不需要折線,但是框線要保留 因此我們需要 把
這個幾個方法 改成public ,到時候繼承之後重寫他 不調用父方法即可
接下來我們創建一個 類繼承 DrawLineChart 重寫 DrawLineCircle,DrawLine 方法
這樣我們就保留 了框線, 取消了圓和折線的繪制
接下來在DrawLine 裡面繪制曲線
<code>
</code>
<code>
</code>
<code>
</code>
<code>
package com.app_chart;
</code>
⑼ 有誰知道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如何畫光滑的曲線圖
achartEngine可以的,在生成圖的過程中,有一個函數傳參數的時候記得它的兩個參數是設定折線的光滑度的,你看看文檔,絕對可以實現的,我之前做過。