- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在为 android 2.3 编写代码。
我写了这个程序;它从 (0,0) 到 (99,99) 绘制了一条 100 像素长的白色对角线。
有一个错误:代码只有在第一次执行时才能正确绘制屏幕。
每次之后,它都会绘制两条较短的对角线;一条黄绿色线和一条蓝线。
每行显示的长度大约是正确长度的一半。
黄绿色线似乎从 (0,0) 开始,但蓝色线似乎从 (200,0) 左右开始
我注意到每次代码执行时,ANativeWindow_Buffer.format 可能不同,不知道是否相关。
有人知道发生了什么事吗?
感谢帮助
#include <android/log.h>
#include <android_native_app_glue.h>
ANativeWindow_Buffer buffer;
void Out( int x, int y ) {
uint16_t * pPixel = buffer.bits;
/* Compute correct x,y */
pPixel += ( x + ( y * buffer.stride ) );
/* put a white pixel there */
*pPixel = -1;
}
void drawscreen( struct android_app * app ) {
unsigned u;
for ( u = 0; u < 100; u++ ) {
Out( u, u );
}
}
static void android_handle_cmd( struct android_app * app, int32_t cmd ) {
switch ( cmd ) {
case APP_CMD_INIT_WINDOW:
// The window is being shown.
if ( NULL == app->window ) {
return;
}
if ( 0 > ANativeWindow_lock( app->window, &buffer, NULL ) ) {
return;
}
drawscreen( app );
ANativeWindow_unlockAndPost( app->window );
break;
}
}
void android_main( struct android_app * app ) {
app_dummy();
app->onAppCmd = android_handle_cmd;
for ( ;; ) {
int events;
int iRet;
struct android_poll_source * source;
iRet = ALooper_pollAll( -1, NULL, &events, (void**)&source );
if ( NULL != source ) {
source->process( app, source );
continue;
}
}
}
最佳答案
也许试试:
int32_t w = ANativeWindow_getWidth(app->window);
int32_t h = ANativeWindow_getHeight(app->window);
ANativeWindow_setBuffersGeometry(app->window, w, h, WINDOW_FORMAT_RGB_565);
调用drawscreen之前
关于android ndk - ANativeWindow_lock 不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12412594/
在 ndk 示例文件夹中有 2 个示例 (bitmap-plasma) 和 (native-plasma)。第一个写入位图,然后使用 AndroidBitmap_lockPixels 在 surfac
我正在为 android 2.3 编写代码。 我写了这个程序;它从 (0,0) 到 (99,99) 绘制了一条 100 像素长的白色对角线。 有一个错误:代码只有在第一次执行时才能正确绘制屏幕。 每次
我正在寻找从 Android GLSurfaceView 快速获取绘图缓冲区的方法。 尽管我知道 glreadpixel 可以完成这项工作,但 glreadpixel 获取绘图缓冲区的速度太慢。 我想
各位 现在我正在使用 Android Gstreamer SDK 来实现流式传输,通过修改 http://docs.gstreamer.com/display/GstSDK/Android+tutor
我是一名优秀的程序员,十分优秀!