android多邊形
Ⅰ Android判斷一個點在不在多邊形中
/**
*功能:判斷點是否在多邊形內方法:求解通過該點的水平線與多邊形各邊的交點結論:單邊交點為奇數,成立!
*
*@parampoint
*指定的某個點
*@paramAPoints
*多邊形的各個頂點坐標(首末點可以不一致)
*@return
*/
publicbooleanPtInPolygon(Pointpoint,List<Point>APoints){
intnCross=0;
for(inti=0;i<APoints.size();i++){
Pointp1=APoints.get(i);
Pointp2=APoints.get((i+1)%APoints.size());
//求解y=p.y與p1p2的交點
if(p1.getY()==p2.getY())//p1p2與y=p0.y平行
continue;
if(point.getY()<Math.min(p1.getY(),p2.getY()))//交點在p1p2延長線上
continue;
if(point.getY()>=Math.max(p1.getY(),p2.getY()))//交點在p1p2延長線上
continue;
//求交點的X坐標
//--------------------------------------------------------------
doublex=(double)(point.getY()-p1.getY())
*(double)(p2.getX()-p1.getX())
/(double)(p2.getY()-p1.getY())+p1.getX();
if(x>point.getX())
nCross++;//只統計單邊交點
}
//單邊交點為偶數,點在多邊形之外---
return(nCross%2==1);
}
Ⅱ 用Android實現畫多邊形箭頭
比較容易, 但你要熟悉以下內容:
1。 擴展標準的View,實現其onDraw方法
public Paint paint=new Paint (Paint.ANTI_ALIAS_FLAG);
protected void onDraw(Canvas canvas) {...}
2。熟悉paint和canvas的用法
3. 在onDraw方法中畫多邊形,Android的多邊形是以Path路徑來描述的。
3。熟悉Path路徑的用法:
以下代碼畫一個箭頭
Path mPath=new Path();
mPath.moveTo(0, -50);
mPath.lineTo(-20, 60);
mPath.lineTo(0, 50);
mPath.lineTo(20, 60);
mPath.close();
最後:利用canvas把path畫出來: canvas.drawPath(mPath)
另外path還有其它方法可以增加一個矩形或弧形進去。
如果要填充就把paint的style改成填充形,不然就是描邊形。
path最後一句一定要封閉,即mPath.close();
祝學習愉快。 有空可看看sdk中關於Path的詳細說明。 我只是告訴你一個大概,具體你需自己體會。
Ⅲ Android游戲開發大全的目錄
《android游戲開發大全》
第一篇android游戲開發核心技術
第1章android平台簡介2
1.1android的來龍去脈2
1.2掀起android的蓋頭來2
1.2.1選擇android的理由2
1.2.2android的應用程序框架3
1.3android開發環境的搭建6
1.3.1sdk的下載及安裝6
1.3.2eclipse集成開發環境的搭建6
1.3.3虛擬設備的創建與模擬器的運行9
1.3.4第一個android程序11
1.3.5android程序的監控與調試14
1.4小結15
第2章android游戲開發之前台渲染16
2.1創建android用戶界面16
2.1.1布局管理16
2.1.2常用控制項及其事件處理22
2.2圖形與動畫在android中的實現24
2.2.1簡單圖形的繪制24
.2.2.2貼圖的藝術26
2.2.3自定義動畫的播放27
2.3android平台下的多媒體開發30
2.3.1音頻的播放30
2.3.2視頻的播放33
2.3.3camera圖像採集36
2.4小結38
第3章android游戲開發之互動式通信39
3.1android應用程序的基本組件39
3.1.1activity組件39
3.1.2service組件41
3.1.3broadcast receiver組件42
3.1.4content provider組件43
3.1.5androidmanifest.xml文件簡介43
3.2應用程序的內部通信47
3.2.1消息的處理者——handler類簡介47
3.2.2使用handler進行內部通信48
3.3應用程序組件之間的通信50
3.3.1intent類簡介50
3.3.2應用程序組件——intentfilter類簡介52
3.3.3示例1:與android系統組件通信53
3.3.4示例2:應用程序組件間通信示例activity部分的開發54
3.3.5示例3:應用程序組件間通信示例service部分的開發56
3.4小結59
第4章android游戲開發之數據存儲和感測器60
4.1在android平台上實現數據存儲60
4.1.1私有文件夾文件的寫入與讀取60
4.1.2讀取resources和assets中的文件63
4.1.3輕量級資料庫sqlite簡介65
4.1.4sqlite的使用示例69
4.1.5數據共享者——content provider的使用72
4.1.6簡單的數據存儲——preferences的使用76
4.2android平台下感測器應用的開發78
4.2.1感測器應用開發流程78
4.2.2常用感測器簡介79
4.2.3感測器應用開發示例81
4.2.4使用sensorsimulator模擬感測器變化83
4.2.5使用新版本的api開發感測器應用86
4.3小結88
第5章android游戲開發之網路編程89
5.1基於socket套接字的網路編程89
5.2基於http協議的網路編程93
5.2.1通過url獲取網路資源93
5.2.2在android中解析xml95
5.3android平台下的google map95
5.3.1定位類genpoint與顯示地圖類mapview的搭配使用95
5.3.2位置監聽器——locationlistener的使用99
5.4其他網路通信方式101
5.4.1使用wifi進行開發101
5.4.2藉助於藍牙(bluetooth)技術進行開發102
5.5小結102
第6章不一樣的游戲,一樣的精彩103
6.1射擊類游戲103
6.1.1游戲玩法103
6.1.2視覺效果104
6.1.3游戲內容設計104
6.2競速類游戲104
6.2.1游戲玩法105
6.2.2視覺效果105
6.2.3游戲內容設計106
6.3益智類游戲106
6.3.1游戲玩法106
6.3.2視覺效果107
6.3.3游戲內容設計107
6.4角色扮演游戲107
6.4.1游戲玩法108
6.4.2視覺效果108
6.4.3游戲內容設計109
6.5闖關動作類游戲109
6.5.1游戲玩法109
6.5.2視覺效果110
6.5.3游戲內容設計110
6.6冒險游戲110
6.6.1游戲玩法110
6.6.2視覺效果111
6.6.3游戲內容設計112
6.7策略游戲112
6.7.1游戲玩法112
6.7.2視覺效果113
6.7.3游戲內容設計113
6.8養成類游戲113
6.8.1游戲玩法114
6.8.2視覺效果114
6.8.3游戲內容設計114
6.9經營類游戲115
6.9.1游戲玩法115
6.9.2視覺效果115
6.9.3游戲內容設計116
6.10體育類游戲116
6.10.1游戲玩法116
6.10.2視覺效果117
6.10.3游戲內容設計117
6.11小結117
第7章游戲背後的數學與物理118
7.1編程中經常用到的數理知識118
7.1.1數學方面118
7.1.2物理方面120
7.2物理小球在游戲中的應用121
7.2.1開發運動體movable類的代碼121
7.2.2開發物理引擎ballthread類的代碼123
7.2.3視圖類——開發ballview類的代碼126
7.2.4繪制線程——開發drawthread類的代碼129
7.2.5開發activity部分的代碼131
7.3粒子系統132
7.3.1粒子對象類——開發粒子對象particle類和粒子集合particleset類132
7.3.2開發焰火粒子系統的物理引擎particlethread類的代碼134
7.3.3視圖類——開發視圖類particleview及其相關類135
7.3.4開發程序activity部分的代碼137
7.3.5將焰火粒子系統改為瀑布粒子系統138
7.4碰撞檢測技術139
7.4.1碰撞檢測技術基礎139
7.4.2游戲中實體對象之間的碰撞檢測140
7.4.3游戲實體對象與環境之間的碰撞檢測143
7.5小結144
第8章游戲中的人工智慧145
8.1讓怪物聰明起來——android中的路徑搜索145
8.1.1路徑搜索示例基本框架的搭建145
8.1.2路徑搜索示例的控制面板實現147
8.1.3路徑搜索示例gameview的實現151
8.1.4深度優先路徑搜索dfs154
8.1.5廣度優先路徑搜索bfs156
8.1.6路徑搜索演算法——dijkstra159
8.1.7用a*演算法優化搜索162
8.2有限狀態機164
8.2.1何為有限狀態機164
8.2.2有限狀態機的簡單實現165
8.2.3有限狀態機的oo實現170
8.3小結172
第9章游戲開發小秘技173
9.1地圖編輯器與關卡設計173
9.1.1關卡地圖的重要性173
9.1.2圖片分割界面的實現175
9.1.3地圖設計界面的實現179
9.2游戲中的模糊邏輯185
9.2.1模糊的才是真實的185
9.2.2如何在android中將游戲模糊化186
9.3游戲的基本優化技巧188
9.3.1代碼上的小藝術188
9.3.2android中的查找表技術190
9.3.3游戲的感覺和性能問題192
9.4小結193
第10章游戲的心臟——物理引擎194
10.1物理引擎很重要194
10.1.1什麼是物理引擎194
10.1.2常見的物理引擎194
10.22d的王者jbox2d197
10.2.1基本的物理學概念197
10.2.2jbox2d中常用類的介紹199
10.3球體撞擊木塊金字塔案例203
10.3.1案例運行效果204
10.3.2案例的基本框架結構204
10.3.3常量類——constant205
10.3.4抽象類——mybody206
10.3.5圓形剛體類——mycirclecolor206
10.3.6生成剛體形狀的工具類——box2til207
10.3.7顏色工具類——colorutil208
10.3.8主控制類——mybox2dactivity209
10.3.9顯示界面類——gameview211
10.3.10繪制線程類——drawthread212
10.4簡易打磚塊案例213
10.4.1一般碰撞版213
10.4.2碰撞後消失版215
10.5旋轉關節蹺蹺板案例220
10.5.1旋轉關節介紹220
10.5.2多邊形剛體類mypolygoncolor的開發220
10.5.3生成剛體形狀的工具類——box2til221
10.5.4將場景中的剛體擺放到位222
10.5.5增加旋轉關節223
10.6旋轉關節鏈條擺案例225
10.6.1案例運行效果225
10.6.2案例的機械結構225
10.6.3主控制類——mybox2dactivity226
10.7組合機械結構案例227
10.7.1案例的運行效果227
10.7.2整體場景的機械結構228
10.7.3案例的基本框架結構229
10.7.4圓形剛體類——mycirclecolor229
10.7.5生成剛體形狀的工具類——box2til230
10.7.6主控制類——mybox2dactivity230
10.7.7游戲界面類——gameview232
10.7.8繪制線程類——drawthread233
10.8小結233
第11章opengl es應用開發基礎234
11.1opengl es概述及3d基本圖形繪制234
11.1.1opengl及opengl es簡介234
11.1.23d基本知識235
11.1.3使用索引的不同繪制方式236
11.1.4用索引法繪制三角形的案例238
11.1.5不使用索引數據繪制244
11.2正交投影和透視投影245
11.2.1正交投影246
11.2.2透視投影246
11.2.3兩種投影方式的原理及視口247
11.2.4兩種投影方式的案例248
11.3光照與材質250
11.3.1光照的3種組成元素250
11.3.2定向光與定位光252
11.3.3法向量253
11.3.4材質254
11.3.5兩種光源的案例255
11.4紋理及紋理映射257
11.4.1紋理映射基本原理257
11.4.2使用紋理映射的案例258
11.4.3幾種紋理拉伸方式261
11.4.4幾種紋理過濾方式262
11.5攝像機和霧特效263
11.5.1攝像機的設置264
11.5.2設置合理的視角264
11.5.3霧特效的開發266
11.6典型幾何體的開發267
11.6.1圓柱268
11.6.2圓錐273
11.6.3球276
11.6.4橢圓體278
11.6.5膠囊體281
11.6.6幾何體大集合284
11.7小結286
第二篇android游戲開發實戰綜合案例
第12章滾屏動作游戲——太空保衛戰288
12.1游戲的背景及功能概述288
12.1.1背景概述288
12.1.2功能簡介288
12.2游戲的策劃及准備工作290
12.2.1游戲的策劃290
12.2.2android平台下游戲的准備工作291
12.3游戲的架構292
12.3.1各個類的簡要介紹292
12.3.2游戲的框架簡介293
12.4輔助界面相關類的實現294
12.4.1主控制類——planeactivity的實現294
12.4.2歡迎界面welcomeview類296
12.4.3其他輔助界面的介紹300
12.5游戲界面的框架設計303
12.6游戲實體相關類的實現306
12.6.1飛機plane類的實現306
12.6.2敵方飛機enemyplane類的實現309
12.6.3子彈bullet類的實現311
12.6.4其他相關類的實現312
12.7游戲界面的完善314
12.7.1地圖類maps的實現314
12.7.2背景滾動類gameviewback groundthread的實現316
12.7.3物體移動線程movethread的實現317
12.7.4鍵盤監聽線程keythread的實現319
12.7.5圖片初始化方法initbitmap的實現320
12.7.6繪制方法ondraw的實現322
12.8游戲的優化與改進324
第13章棋牌游戲——中國象棋人機對弈325
13.1游戲的背景及功能概述325
13.1.1背景概述325
13.1.2功能介紹325
13.2游戲的策劃及准備工作327
13.2.1游戲的策劃327
13.2.2android平台下游戲的准備工作327
13.3游戲的架構329
13.3.1各個類簡要介紹329
13.3.2游戲框架簡介330
13.4主控制類——chess_djb_activity331
13.5輔助界面相關類334
13.6游戲界面相關類336
13.6.1游戲界面繪制類gameview336
13.6.2游戲界面常量類viewconstant353
13.7走法引擎相關類354
13.7.1常量類constant354
13.7.2工具類chess_loatil359
13.7.3走法引擎主類loatil360
13.7.4走法的排序規則類mycomparator371
13.7.5記錄走棋步驟類stackplaychess371
13.8游戲的優化與改進371
第14章物理感測器游戲——小球快跑(3d版)372
14.1游戲背景及功能概述372
14.1.1背景概述372
14.1.2功能簡介372
14.2游戲的策劃及准備工作374
14.2.1游戲的策劃374
14.2.2小球快跑游戲開發的准備工作375
14.3游戲的架構375
14.3.1游戲的總體架構376
14.3.2游戲的類結構376
14.4主控制類——driftball類的開發378
14.4.1driftball類的代碼框架378
14.4.2driftball類的主要成員方法的實現379
14.5游戲主菜單的開發381
14.5.1歡迎界面類——welcome view類的代碼框架381
14.5.2welcomeview類主要成員方法382
14.5.3welcomethread類的開發383
14.5.4菜單界面的用戶交互事件處理384
14.6游戲界面模塊的開發385
14.6.1游戲界面類——gameview的成員變數385
14.6.2gameview的成員方法簡介387
14.6.3游戲界面繪制線程——gamethread類的代碼框架387
14.6.4gamemenuthread類的開發388
14.6.5用戶交互事件處理389
14.7游戲中各個圖層的開發391
14.7.1地圖圖層的開發391
14.7.2其他圖層的開發與實現392
14.8游戲後台邏輯的開發395
14.8.1小球的運動控制395
14.8.2小球的碰撞檢測396
14.8.3大炮相關類cannon和missile的開發400
14.9感測器計算模塊的開發403
14.9.1手機姿態變化監聽器——balllistener類的開發403
14.9.2工具類——rotateutil類的代碼框架404
14.9.3工具類——rotateutil類的開發406
14.10游戲的優化與改進408
第15章塔防游戲——精靈塔防410
15.1游戲的背景及功能概述410
15.1.1背景概述410
15.1.2功能介紹410
15.2游戲的策劃及准備工作413
15.2.1游戲的策劃413
15.2.2android平台下游戲開發的准備工作414
15.3游戲的架構415
15.3.1各個類的簡要介紹416
15.3.2游戲框架簡介417
15.4主控制類tafanggameactivity和資料庫類dbutil418
15.4.1主控制類——tafanggame activity主要框架418
15.4.2主控制類——tafanggame activity中部分資料庫的實現421
15.4.3主控制類——tafanggame activity中對話框的開發423
15.4.4資料庫類dbutil的開發427
11.5界面相關類428
15.5.1歡迎界面welcomeview類的介紹428
15.5.2主界面mainmenusurfaceview類的介紹430
15.5.3音效設置界面musicsurfaceview類的介紹434
15.5.4游戲結束界面gameoverview類和幫助界面helpview類的介紹435
15.5.5積分榜界面highjifensurfaceview類的介紹435
15.6游戲界面gameview及相關類438
15.6.1精靈怪物target類439
15.6.2箭塔singlejianta類443
15.6.3箭shell類444
15.6.4精靈怪物的出擊現場——targetnumthread447
15.6.5箭塔控制發射線程——shellnumthread449
15.6.6游戲地圖矩陣模擬化451
15.6.7擺放箭塔守護城池452
15.6.8游戲中的2.5d效果455
15.6.9彈指間怪物灰飛煙滅——游戲水晶455
15.7游戲的優化和改進459
第16章策略游戲——回到戰國460
16.1游戲的背景及功能概述460
16.1.1背景概述460
16.1.2功能簡介460
16.2游戲的策劃及准備工作465
16.2.1游戲的策劃465
16.2.2android平台下游戲的准備工作465
16.3游戲的架構467
16.3.1游戲的模塊架構467
16.3.2游戲各個類的簡要介紹468
16.4地圖設計器的開發470
16.4.1底層地圖設計器的開發470
16.4.2上層地圖設計器的開發474
16.5activity和游戲工具類的開發475
16.5.1主控制類——hdzgactivity的介紹475
16.5.2公式封裝類——gameformula的介紹478
16.5.3常量工具類constantutil的介紹479
16.6數據存取模塊的開發481
16.6.1城池信息以及地圖層信息的封裝類481
16.6.2數據存取相關類的介紹485
16.7英雄角色模塊的開發488
16.7.1hero類的代碼框架488
16.7.2英雄運動線程——herogo thread類的開發491
16.7.3輔助線程——herobackdata thread類的開發493
16.8表示層界面模塊的開發493
16.8.1滾屏類——screenrollview類的開發494
16.8.2滾屏線程——screenroll thread的開發495
16.8.3游戲界面gameview的框架介紹496
16.8.4游戲界面繪制方法ondraw的介紹498
16.8.5游戲界面屏幕監聽方法ontouch的介紹500
16.8.6游戲界面後台線程game viewthread的介紹502
16.9管理面板模塊的開發503
16.9.1人物屬性面板類manpanel view的開發503
16.9.2城池管理面板類citymanage view的開發508
16.10地圖中可遇實體模塊的開發511
16.10.1繪制類——mydrawable的開發511
16.10.2抽象類——mymeetabledrawable的開發513
16.10.3森林類——forestdrawable的開發514
16.10.4可遇實體對象的調用流程516
16.11英雄技能模塊的開發518
16.11.1技能抽象類——skill的開發518
16.11.2伐木技能類——lumber skill的開發519
16.11.3隨心步技能類——suixinbuskill的開發520
16.12游戲提示模塊的開發520
16.12.1提示模塊抽象類——gamealert的開發520
16.12.2點擊確定按鈕顯示的信息類——plainalert的開發521
16.12.3顯示糧草危機信息類——foodalert的開發522
16.12.4輔助線程herobackdatathread中對foodalert的調用524
16.13游戲的優化與改進525
第17章體育游戲——2d迷你撞球527
17.12d撞球的背景及功能概述527
17.1.1背景概述527
17.1.2功能簡介527
17.2游戲的策劃及准備工作530
17.2.1游戲的策劃530
17.2.2android平台下游戲的准備工作530
17.3游戲的架構531
17.3.1游戲的框架簡介531
17.3.2各個類的簡要介紹532
17.4公共類的實現534
17.4.1主控制類——gameactivity的代碼框架534
17.4.2gameactivity類主要成員變數及方法的實現536
17.4.3常量類——constant的實現540
17.5輔助界面相關類的實現542
17.5.1歡迎動畫界面welcomeview類的實現542
17.5.2主菜單界面mainmenuview的代碼框架544
17.5.3主界面類——mainmenu view部分成員方法的實現545
17.5.4主界面動畫線程類view drawthread的實現548
17.5.5排行榜界面highscore view的代碼框架549
17.5.6highscoreview類的部分方法的實現550
17.6游戲界面相關類的實現552
17.6.1游戲界面gameview類的代碼框架552
17.6.2gameview類部分成員方法的實現553
17.6.3鍵盤監聽線程keythread類的實現557
17.6.4球運動的線程ballgothread類的實現558
17.7情景相關類的實現559
17.7.1球台table類的實現559
17.7.2撞球ball類的代碼框架561
17.7.3ball類部分成員方法的實現563
17.7.4球桿cue類的實現566
17.8自定義控制項及工具類的實現568
17.8.1球與球碰撞檢測的工具類collisionutil的實現568
17.8.2定時器timer類的實現571
17.8.3主菜單按鈕mainmenu button類的實現572
17.8.4獲取日期的工具dateutil 類的實現573
17.9游戲的優化與改進574
第18章益智游戲——3d版推箱子575
18.13d版推箱子的背景及功能概述575
18.1.1背景概述575
18.1.2功能簡介575
18.2游戲的策劃及准備工作579
18.2.1游戲的策劃579
18.2.2android平台下游戲開發的准備工作579
18.3游戲的架構580
18.3.1游戲的框架簡介580
18.3.2各個類的簡要介紹581
18.4公共類的實現582
18.4.1主控制類——myactivity的代碼框架582
18.4.2myactivity類成員方法的實現584
18.4.3常量類constant的實現585
18.5輔助界面相關類的實現587
18.5.1歡迎動畫界面welcomeview類的實現587
18.5.2主菜單界面mainview的實現589
18.6游戲界面相關類590
18.6.1游戲界面mysurfaceview類的設計與實現590
18.6.2鍵盤監聽線程keythread599
18.7自定義控制項及工具類600
18.7.1縮放圖片的方法picloatil600
18.7.2主菜單上的按鈕類mainmenubutton601
18.8情景相關類的實現602
18.8.1機器人類的代碼框架602
18.8.2機器人類成員方法的實現603
18.8.3機器人組類robotgroup類的實現605
18.8.4機器人組類成員方法的實現606
18.8.5圓面circle類的實現607
18.8.6矩形紋理類texturerect的實現609
18.8.7紋理矩形組類texturerect group的實現610
18.8.8牆類wall的實現611
18.8.9牆wall類成員方法的實現612
18.8.10箱子cube類的實現616
18.8.11箱子組cubegroup類的實現618
18.8.12箱子移動cubego類的代碼框架619
18.8.13箱子移動cubego類的成員方法的實現620
18.8.14地板類floor的實現621
18.9推箱子地圖設計器的開發623
18.10游戲的優化與改進624
第19章物理引擎游戲——盛怒的老鼠625
19.1游戲背景及功能概述625
19.1.1游戲開發背景625
19.1.2游戲功能概述625
19.2游戲策劃及准備工作628
19.2.1游戲策劃628
19.2.2游戲開發的准備工作628
19.3游戲的框架630
19.3.1游戲主要用到的技術631
19.3.2游戲各個類的介紹631
19.3.3游戲的基本框架633
19.4公共類634
19.4.1主控制類——mybox2dactivity634
19.4.2常量類constant635
19.5主界面的設計與實現644
19.5.1鼠頭和貓頭類taj644
19.5.2鼠頭和貓頭控制線程——tjthread646
19.5.3主界面mainmenuview646
19.5.4刷幀線程mainmenudrawthread653
19.6工具類654
19.6.1載入及縮放圖片的工具類picloatil654
19.6.2生成剛體工具類box2til655
19.6.3聲音工具類sountil656
19.7剛體相關類657
19.7.1多邊形類mypolygonimg657
19.7.2貓頭類bodycat659
19.7.3冰塊類bodyice660
19.7.4木條類bodywood661
19.7.5剛體類型枚舉類bodytype661
19.7.6剛體查詢工具類bodysearchutil662
19.8游戲界面相關類663
19.8.1皮筋類pijin663
19.8.2記錄分數類score664
19.8.3刷幀線程drawthread665
19.8.4游戲界面類gameview668
19.9游戲優化與改進673
Ⅳ 哪位知道在android 調用百度地圖API,如何實現通過手機屏幕上繪制多邊形,最好有例子可以參考一下。
風暖鳥聲碎,日高花影重。
年年越溪女,相憶采芙蓉。
Ⅳ Android 不規則多邊形ImageView布局問題,大神在哪裡
參考下這個
java">//https://github.com/siyamed/android-shape-imageview
Ⅵ android 怎麼手動繪制幾何圖形源碼
可以參考下面的代碼
package cn.m15.xys;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.View;
public class Geometry extends Activity {
public int mScreenWidth = 0;
public int mScreenHeight = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(new GeometryView(this));
super.onCreate(savedInstanceState);
}
class GeometryView extends View {
Paint mPaint = null;
public GeometryView(Context context) {
super(context);
mPaint = new Paint();
mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//設置畫布顏色 也就是背景顏色
canvas.drawColor(Color.WHITE);
mPaint.setColor(Color.BLACK);
canvas.drawText("繪制無規則幾何圖形喔!!!", 150, 30, mPaint);
//繪制一條線
mPaint.setColor(Color.BLACK);
mPaint.setStrokeWidth(4);
canvas.drawLine(0, 0, 100, 100, mPaint);
//繪制一個矩形
mPaint.setColor(Color.YELLOW);
canvas.drawRect(0, 120, 100, 200, mPaint);
//繪制一個圓形
mPaint.setColor(Color.BLUE);
canvas.drawCircle(80, 300, 50, mPaint);
//繪制一個橢圓
mPaint.setColor(Color.CYAN);
canvas.drawOval(new RectF(300,370,120,100), mPaint);
//繪制多邊形
mPaint.setColor(Color.BLACK);
Path path = new Path();
path.moveTo(150+5 , 400 -50);
path.lineTo(150+45, 400 - 50);
path.lineTo(150+30, 460 - 50);
path.lineTo(150+20, 460 - 50);
path.close();
canvas.drawPath(path, mPaint);
}
}
}
Ⅶ 如何用android 畫出三角形
。支支吾吾也沒說出來,哎,回家一想太可氣 了,就找到方法。原來是android.graphics.Path這個類,實現的。Api里的描述如下:The Path class encapsulates compound (multiple contour) geometric paths consisting of straight line segments, quadratic curves, and cubic curves. It can be drawn with canvas.drawPath(path, paint), either filled or stroked (based on the paint's Style), or it can be used for clipping or to draw text on a path. 它大概的意思是說path類包含了多種組件,比如直線段,二次曲線,三次曲線,它可以在畫布上繪制,無論是填充或筆畫。下面舉例說明: package cn.lgl.draw; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; import android.graphics.Shader; import android.view.View; public class MyView extends View { public MyView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); /*設置背景為白色*/ canvas.drawColor(Color.WHITE); Paint paint=new Paint(); /*去鋸齒*/ paint.setAntiAlias(true); /*設置paint的顏色*/ paint.setColor(Color.RED); /*設置paint的 style 為STROKE:空心*/ paint.setStyle(Paint.Style.STROKE); /*設置paint的外框寬度*/ paint.setStrokeWidth(3); /*畫一個空心三角形*/ Path path=new Path(); path.moveTo(10,330); path.lineTo(70,330); path.lineTo(40,100); path.close(); canvas.drawPath(path, paint); /*設置paint 的style為 FILL:實心*/ paint.setStyle(Paint.Style.FILL); /*設置paint的顏色*/ paint.setColor(Color.BLUE); /*畫一個實心三角形*/ Path path2=new Path(); path2.moveTo(90,330); path2.lineTo(150,330); path2.lineTo(120,270); path2.close(); canvas.drawPath(path2, paint); Shader mShader=new LinearGradient(0,0,100,100, new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW}, null,Shader.TileMode.REPEAT); paint.setShader(mShader); /*畫一個漸變色三角形*/ Path path4=new Path(); path4.moveTo(170,330); path4.lineTo(230,330); path4.lineTo(200,270); path4.close(); canvas.drawPath(path4,paint); } }
Ⅷ 有沒有安卓機用的可以畫3D立體幾何的app,可以切割的,像icrosss那樣的,或者給個icros
目前只有:geogebra。icrosss未在國內上線基本上無法使用。GeoGebra是自由且跨平台的動態數學軟體,提供各級教育使用,包含了幾何、代數、表格、圖形、統計和微積分,集中在一個容易使用的軟體。
GeoGebra 是一個結合「幾何」、「代數」與「微積分」的動態數學軟體,是由美國佛羅里達州亞特蘭大學的數學教授Markus Hohenwarter所設計的。
1、GeoGebra是一個動態的幾何軟體。可以在上面畫點、向量、線段、直線、多邊形、圓錐曲線,甚至是函數,事後你還可以改變它們的屬性。
2、也可以直接輸入方程和點坐標。所以,GeoGebra也有處理變數的能力(這些變數可以是一個數字、角度、向量或點坐標),也可以對函數作微分與積分,找出方程的根或計算函數的極大極小值。
(8)android多邊形擴展閱讀:
3D立體幾何的使用:
可以在Geogebrar命令區中直接輸入代數表達式,再按下Enter鍵後,所輸入的代數表達式會在代數區內出現,同時在幾何區內出現對應的圖形。
在代數區中,數學對象被歸類成自由對象和派生對象。如果產生一個對象而未使用任何已經存在的對象,則被歸類為自由對象。若新產生的對象是使用其他已經存在的對象而產生,則歸類為派生對象。
提示:假如想要隱藏在代數區內的特徵,可以將對象指定為輔助對象,做法如下:在代數區中,在對象上點右鍵,在右鍵菜單中選擇「輔助對象」,或者在彈出菜單中選擇「屬性」,在屬性對話框中選擇標簽「基本」,然後在「輔助對象」選項前復選框中打對勾。根據程序的默認,「輔助對象」是不會出現在代數區中,但是可以在「查看」菜單中選擇「輔助對象」,然後在代數區中就可以看到了。
可以修改代數區內的對象:先確認已選取移動工具,然後雙擊代數區內的對象,可以在文字方塊中直接編輯對象的代數特徵數據,再按下Enter鍵後,對象的圖形特徵也會隨之改變。若雙擊代數區內的派生對象時,可以在出現的對話框中「重新定義」對象。