亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中怎么調用skia函數

發布時間:2021-07-20 14:53:07 來源:億速云 閱讀:533 作者:Leah 欄目:移動開發

這篇文章將為大家詳細講解有關Android中怎么調用skia函數,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1、建立完整的android開發環境,JAVA層的環境SDK、JDK、eclipse都要裝,C&C++層的環境NDK、cygwin、git也都要裝好。

2、下載完整的skia代碼,代碼自己到google上搜吧(重要提示:wiki,TortoiseSVN)

3、通過git下載android源碼:xxxx/core,xxxx/base,xxxx/skia三個文件夾就夠了。(找到android源碼git文件的下載列表,搜索頁面就可以了,都下載,都下載!!)

4、編譯skia文件夾,獲得skia對應的so文件。

4.1 如果你的skia文件夾來自skia官網,那就看看目錄下的config文件,編寫你的make.out文件,之后編譯,出錯,再編譯,再出錯。。。是因為缺少頭文件,對吧?,這些頭文件與硬件或圖像編碼有關,比如說atomic.h啊png.h啊什么的。找吧!!補上!!還是報錯的話,就是因為還缺少某些定義,報錯一大推“undeclared”,找不到就只能自己寫,當然前提是你對你的開發板足夠熟悉,比如skia要求mutex的申明,并實現這個自旋鎖的占用和釋放接口。(本步驟可以省略)

4.2 在ndk文件夾里搜索,獲得libskia.so, libskiagl.so, libjnigraphics.so

5、新建項目文件夾,把第三步的core,base,skia三個文件夾扔進去。在項目文件夾里新建個lib文件夾,把第四步生成的so文件扔到lib里。新建jni文件夾,在jni里編寫你的cpp文件。(重要提示:你可以不仔細看我寫的東西,但如果你是在沒有仔細看NDK自帶doc文件夾里那十幾篇英文參考的情況下這么做,那你一定會生不如死的)

6、搜索skia文件,找到skcanvas.h,看看我們能用skia干什么。和android相比,skia的自述文件儼然像是個天使。不理解什么是天使?請參看android NDK下的文檔。

7、以畫畫寫字為例,我的cpp文件如下:

#include <jni.h> #include <time.h> #include <android\log.h> #include <android\bitmap.h> #include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #include "SkBitmap.h"  #include "SkDevice.h"  #include "SkPaint.h"  #include "SkRect.h"  #include "SkImageEncoder.h"  extern "C"  {  JNIEXPORT jint JNICALL Java_JNItestForGraph_JNItestForGraph_TestBackView_changeback    (JNIEnv * env, jobject  obj, jobject bitmap, jint time);  }  JNIEXPORT jint JNICALL Java_JNItestForGraph_JNItestForGraph_TestBackView_changeback      (JNIEnv * env, jobject  obj, jobject bitmap, jint time)  {                   AndroidBitmapInfo  info;               int*              pixels;                  int ret;                  ret = AndroidBitmap_getInfo(env, bitmap, &info);                  ret = AndroidBitmap_lockPixels(env, bitmap, (void**)&pixels);                  int width=(int)info.width;                  int height=(int)info.height;                            SkBitmap bmp = SkBitmap();                  bmp.setConfig(SkBitmap::kARGB_8888_Config,width,height,0);                  bmp.setPixels((void*)pixels);                  SkCanvas backgroud(bmp);                  SkPaint paint;                      paint.setARGB(255, 255, 0, 0);                  SkRect r;                  r.set(25, 25, 145, 145);                  backgroud.drawRect(r, paint);                  AndroidBitmap_unlockPixels(env, bitmap);                  backgroud.drawRect(r, paint);                  paint.setARGB(255, 0, 255, 0);                      r.offset(20, 20);                      backgroud.drawRect(r, paint);                      paint.setARGB(255, 0, 0, 255);                      r.offset(20, 20);                      backgroud.drawRect(r, paint);                  paint.setARGB(255, 0, 0, 0);                  backgroud.drawText("ABCD", 4*sizeof(char), 0, 100 , paint);                  return (ret);  }

(重要提示:文件名的命名很有講究,網上搜搜NDK native C或好好看看NDK自述文檔HOWTO.TXT)

8、編寫android.mk和appliction文件,具體怎么寫,直接拷貝NDK下sample里的同名文件,再修改一下就可以了。具體怎么改。。。兄弟!不是我蒙你,還是看看NDK下的自述文檔吧,我收回在第5步所說的話。用NDK文件夾下的ndk-build編譯,根據出錯信息關聯所需頭文件,都在你之前下載的幾個文件夾里了,真的。編譯成功,會在lib文件夾得到新的so文件。(重要提示:mk文件中記得帶上-lskia,-lskiagl,-ljnigraphics)

9、編寫JAVA程序調用上面的函數。該怎么寫呢? 打開eclipse,新建工程,在程序中先Loadlibrary,再native C申明,具體。。。網上搜吧,要么就看看NDK下面sample里隨便哪個例子,那個plasma就不錯

10、運行ecplise里的項目,之前先看看有沒有把so文件放到項目所在地的lib中。

11、下載到真機上運行,較低版本的機器,會缺少libjnipraphics.so庫,需要在apk中添加。

關于Android中怎么調用skia函數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

文化| 曲周县| 沧州市| 日土县| 合肥市| 遂昌县| 松潘县| 泗阳县| 若羌县| 胶南市| 永平县| 和顺县| 临邑县| 垫江县| 明星| 商丘市| 高台县| 长丰县| 保靖县| 尼木县| 大港区| 红桥区| 沧源| 西盟| 彰化市| 房产| 广河县| 富平县| 天等县| 奉化市| 大田县| 家居| 汝南县| 永春县| 本溪| 荣昌县| 白城市| 巴林右旗| 同德县| 大英县| 长海县|