編輯:Android開發實例
Android平台如何在OpenGL下截圖呢? 如果是一個FPS類的游戲可能常規的方式截圖,由於Android系統底層讀取framebuffer的效率不是很高,嘗嘗截圖出來的游戲可能由於刷新問題,產生上半部分和下半部分不匹配的問題,在GL中我們可以使用下面這個代碼來解決。
public static Bitmap SavePixels(int x, int y, int w, int h, GL10 gl)
{
int b[]=new int[w*h];
int bt[]=new int[w*h];
IntBuffer ib=IntBuffer.wrap(b);
ib.position(0);
gl.glReadPixels(x, y, w, h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
for(int i=0; i<h; i++)
{
for(int j=0; j<w; j++)
{
int pix=b[i*w+j];
int pb=(pix>>16)&0xff;
int pr=(pix<<16)&0x00ff0000;
int pix1=(pix&0xff00ff00) | pr | pb;
bt[(h-i-1)*w+j]=pix1;
}
}
Bitmap sb=Bitmap.createBitmap(bt, w, h, true);
return sb;
}
上面是一個簡單的GL讀取RGBA分量的方法,然後生成Android通用的Bitmap對象,
public static void SavePNG(int x, int y, int w, int h, String fileName, GL10 gl)
{
Bitmap bmp=SavePixels(x,y,w,h,gl);
try
{
FileOutputStream fos=new FileOutputStream("/sdcard/android123/"+fileName); //android123提示大家,如何2.2或更高的系統sdcard路徑為/mnt/sdcard/
bmp.compress(CompressFormat.PNG, 100, fos); //保存為png格式,質量100%
try
{
fos.flush();
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
fos.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
如何調用呢,直接執行這個靜態的方法SavePNG即可,比如SavePNG(0, 0, Config.SCREEN_W, Config.SCREEN_H, "cwj.png", gl); 最後一個參數為你的OpenGL對象。
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
為要獲取網絡上的Json所以需要服務器端提供的支持。 一、創建服務器端: 服務器端項目結構: 服務器端運行效果圖: 第一步:創建業務所需的JavaBean 代
1. 布局XML/HTML代碼 <?xml version=&q
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個