編輯:關於Android編程
本篇博客主要記錄NDK開發之入門小demo,雖說NDK開發包裡面有hellojni的項目,但是博主還是記錄一下學習的過程吧.AS2.2現在對NDK支持的已經很好了,但是博主學習NDK還是采用eclipse作為工具,學的是一個思路,工具只是使用方式不同,所以不用糾結工具的事情了哦


創建好我們的工程之後呢,我們需要先書寫一個本地方法來使用JNI
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 按鈕的點擊事件處理
public void bt_click(View v) {
Button bt = (Button) v;
bt.setText(getString());
}
/**
* 調用c代碼返回一個字符串
*
* @return
*/
private native String getString();
}
可以看到我們的代碼很簡單,點擊按鈕觸發bt_click事件,然後獲取本地方法返回的字符串,然後顯示在按鈕上,這時候我們的app層面的代碼已經寫好了,本地方法是需要我們使用c代碼去實現的

右鍵項目添加本地支持

這個是幫你創建的動態鏈接庫的名稱,也就是我們經常使用的第三方sdk中經常看到的.so文件,點擊確定
確定以後你會發現在項目中多了一個文件夾jni,裡面還有一個.cpp的文件,還有個Android.mk文件

我們更改.cpp後綴為.c,然後打開這個文件

裡面沒有任何的代碼,這是需要我們自己去寫Activity中那個本地方法的實現的
右鍵項目拿到項目的目錄

來到項目的目錄下面,並且進入src目錄

使用cmd進入該目錄

生成頭文件

後面的是你的activity的包名+Activity名稱
成功就是不提示任何信息,如果你的activity中有中文會失敗,提示不可映射的字符
成功之後在src目錄中生成了一個頭文件

我們打開它,復制其中的實現方法

紅色框框裡面的就是我們需要復制的代碼,然後我們復制到我們的.c文件中,去掉最後的封號,加上一對花括號,然後在括號中加上變量的名字,然後我們返回一個字符串
#includeJNIEXPORT jstring JNICALL Java_com_xiaojinzi_jnidemo_MainActivity_getString (JNIEnv * env, jobject jb){ return (*env) ->NewStringUTF(env,"welcome to JNI world"); }
實現方法必須是以下的格式:Java_包名_類名_方法名
NewStringUTF是一個JNI中的函數,現在可以先不管,知道他能返回一個字符串就行了,內容是後面的
"welcome to JNI world"
這時候我們的實現方法寫好了,然後我們需要生成.so文件
在jni文件夾中新建一個Application.mk文件,裡面的內容為
APP_ABI := all
就一句話,是表示生成支持所有平台的.so文件
注意還有一點,打開我們的Android.mk文件

這裡說明了實現的文件是哪個,我們剛剛改成了.c文件,所以這裡需要改成JniDemo.c

最後我們在activity中加載這個庫,就可以運行項目啦
public class MainActivity extends Activity {
static{
System.loadLibrary("JniDemo");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void bt_click(View v) {
Button bt = (Button) v;
bt.setText(getString());
}
private native String getString();
}

android開發之shape詳解
很多時候,使用shape能夠實現的效果,你用一張圖片也能夠實現,但問題是一張圖片無論你怎麼壓縮,它都不可能比一個xml文件小,因此,為了獲得一個高性能的手機App,我們在
ANDROID中使用VIEWFLIPPER類實現屏幕切換(關於坐標軸的問題已補充更改)
屏幕切換指的是在同一個Activity內屏幕間的切換,ViewFlipper繼承了Framelayout類,ViewAnimator類的作用是為FrameLayout裡面
Android面試知識(4)
30、簡要解釋一下Activity、 Intent 、Intent Filter、Service、BroadcastReceiver。一個activity呈現了一個用戶可
靠譜助手一直反復啟動怎麼辦
1.先確認靠譜助手安裝檢測有沒有問題(以下幾項:顏色是否32位,opengl2.0是否支持,net framework 2.0 sp2是否安裝,C盤空間是否