Android2.3中C++编写的简单的绘图demo
2013-01-22 20:59
1696 查看
例子是仿照柯元旦的《Android内核剖析》中示例。
在external下新建文件夹MySurface, 里面编写两个文件,一个Android.mk,一个Welcome.cpp
在external/MySurface里mm,然后将生成的 out/target/product/generic/system/bin/hellosurface adb push 到/system/bin/ 下,
adb shell进入***D,在/system/bin/中 ./hellosurface,即可看到如下的效果:
通过C++编写的绘图,在2.3源码中亲测成功。
在external下新建文件夹MySurface, 里面编写两个文件,一个Android.mk,一个Welcome.cpp
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ Welcome.cpp LOCAL_SHARED_LIBRARIES := \ libcutils \ libutils \ libui \ libsurfaceflinger_client \ libskia LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/../../include/ui \ $(LOCAL_PATH)/../../include/utils \ external/skia/include/core \ external/skia/include/utils LOCAL_MODULE:= hellosurface LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE)
#include <stdlib.h> #include <stdio.h> #include <surfaceflinger/SurfaceComposerClient.h> #include <surfaceflinger/Surface.h> #include <surfaceflinger/ISurfaceComposer.h> #include <SkCanvas.h> #include <SkBitmap.h> #include <SkRegion.h> using namespace android; int main(int argc,char** argv) { int pid=getpid(); int x=176,y=144; sp<SurfaceComposerClient> videoClient=new SurfaceComposerClient; sp<SurfaceControl> spSurCtrl=videoClient->createSurface(pid,0,x,y,PIXEL_FORMAT_RGBA_8888,0); // sp<SurfaceControl> spSurCtrl=videoClient->createSurface(0,x,y,PIXEL_FORMAT_RGBA_8888,0); SurfaceControl* surContrl=spSurCtrl.get(); const sp<Surface>& sur=surContrl->getSurface(); videoClient->openTransaction(); surContrl->setSize(x,y); surContrl->setPosition(10,10); surContrl->setLayer(100000); videoClient->closeTransaction(); surContrl->show(); SkBitmap *pmap=new SkBitmap(); //pmap->setConfig(SkBitmap::KARGB_8888_Config,x,y); SkBitmap::Config enum_val=SkBitmap::kARGB_8888_Config; pmap->setConfig(enum_val,x,y); Surface::SurfaceInfo info; sur->lock(&info); pmap->setPixels(info.bits); sur->unlockAndPost(); SkCanvas *canvas=new SkCanvas(*pmap); canvas->drawColor(0x80509a47,SkXfermode::kSrc_Mode); while(1); return 0; }
在external/MySurface里mm,然后将生成的 out/target/product/generic/system/bin/hellosurface adb push 到/system/bin/ 下,
adb shell进入***D,在/system/bin/中 ./hellosurface,即可看到如下的效果:
通过C++编写的绘图,在2.3源码中亲测成功。
相关文章推荐
- Windows平台使用NDK编写在Android上运行的C/C++标准程序
- ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 11 编写简单的消息发布器和订阅器 (C++)
- 用C++编写简单绘图语言的语法分析器——程序清单
- 用C++编写一个随机产生多个两位数四则运算式子的简单程序
- Android JNI简单实例(android 调用C/C++代码)
- Android 服务与多线程——编写简单的音乐播放器程序
- 1.1. 编写简单的 C++ 程序
- android2.3以上简单入门jni之cmake的使用
- 【android基础】之编写最简单的android谷歌地图应用
- Google开源C++单元测试框架gTest 8:编写简单的测试框架
- android 怎么编写一个简单的聊天界面
- 强化你的Terminal IDE---在android平板/手机上编写C/C++
- Android的NDK开发(2)——利用Android NDK编写一个简单的HelloWorld
- C++自己编写头文件类与函数的调用(超简单实例)
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- 使用c++开发excel插件 (3.4、编写一个简单的动态链接库)
- Android中编写简单的手电筒小应用的实例教程
- 编写简单的连接MongoDB数据库C++程序 && 解决编译C++程序时链接MongoDB动态库失败的问题
- 使用C++编写简单的迷宫游戏
- C++程序员进军Android系列:Android 2.3升级后提示找不到adb.exe