編輯:關於Android編程
PS: 入門階段,加上是Android菜鳥,所以先閱讀他們的文檔作為學習,幸好他們的文檔寫得夠詳細,非常適合我這種小白菜鳥用戶。我主要是看他們的developer_guide_android.pdf文檔(在下載包的docs目錄下)。
開發環境
Android Studio
我自己用的是Android Studio 2.1.1, 也恰好和文檔中示例的開發環境一致。
准備工作:
1. 新建一個Android工程
打開Android Studio,點擊“File -> New -> New Project…”, 然後填寫工程名稱, 這裡我用RenderPDF, 如下所示。點擊Next.

選擇在”Phone and Tablet”上來跑該app. 最低的SDK版本選擇:API 8: Android 2.2. 這樣基本可以支持所有的android設備。點擊Next.

為了簡單起見,這裡選擇“Empty Activity”. 點擊Next.

使用默認的Activity如下圖所示:

2. 導入Foxit的SDK庫
拷貝下載包中libs文件夾下的 FoxitRDKUIExtensions.aar文件和x86, arm64-v8a, armeabi-v7a文件夾到 ”RenderPDF\app\libs”.
PS: 這裡我把三種架構的庫都拷貝過去了,你也可以根據你使用的真機或者模擬器的架構選擇對應的庫。

拷貝到”RenderPDF\app\libs”目錄下後,在Android Studio中,工程app\libs下面就可以看到它們了,如下圖:

這裡我們僅僅是把庫放到了工程裡面,並沒有對庫進行引用,那下面自然是要開始進行相關的配置工作了。打開app下面的“build.gradle”文件,進行如下操作:
a) 添加對”librdk.so”( x86/arm64-v8a/armeabi-v7a文件夾下的librdk.so)的引用:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">
android {
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
b) 添加對”FoxitRDKUIExtensions.aar”的引用
定義libs文件作為repository:
repositories {
flatDir {
dirs 'libs'
}
}
在dependencies中加入FoxitRDKUIExtensions.aar.
dependencies {
compile (name:'FoxitRDKUIExtensions', ext:'aar')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
}
這裡附上整個“build.gradle”文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.foxit.test_android"
minSdkVersion 8
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile (name:'FoxitRDKUIExtensions', ext:'aar')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
}
PS:這裡按文檔說的,設置compileSdkVersion和targetSdkVersion為API 23.
配置完“build.gradle”文件後,點擊“Build -> Rebuild project”,然後在“\app\build\intermediates\explodedaar\FoxitRDKUIExtensions”下可以看到FoxitRDKUIExtensions.aar裡面具體信息了,如下圖:

至此,我們已經完成對Foxit SDK庫的引用,寫代碼前的准備工作已經完成,下面要開始寫代碼了。
PS: 我們是要渲染顯示一個PDF文檔,因此需要事先將文檔放到真機或者模擬器中。這裡我還是用getting_started_android.pdf文檔(太懶了,直接用現成的)。如果你不知道怎麼添加文檔,請參考第一篇Foxit Mobile PDF SDK for Android_初始(1)。
3. 寫代碼:渲染顯示PDF文檔
真的只有幾行代碼就可以實現哦,接著往下看。
所有非界面的代碼我都寫在”RenderPDF\app\src\main\java\com\test\renderpdf\MainActivity.java”中。
首先,初始化SDK庫
導入頭文件:
import com.foxit.sdk.common.Library; import com.foxit.sdk.common.PDFException;
添加初始化SDK庫的代碼:
System.loadLibrary("rdk");
try {
Library.init("sn", "key");
} catch (PDFException e) {
e.printStackTrace();
return;
}
sn和key是一串比較長的字符串,大家可以到libs目錄下的rdk_sn.txt和rdk_key.txt文件中copy過來,或者從demo中copy。
在主界面上面添加PDFViewCtrl
在“app/src/main/res/layout/activity_main.xml”中添加如下代碼:
加載文檔以及渲染顯示文檔
在“MainActivity.java”中,實例化一個PDFDoc對象用來加載文檔,然後實例化一個PDFViewCtrl對象用來顯示加載的文檔,代碼如下:
PS: 官方文檔中稱將MainActivity從繼承自AppCompatActivity改為FragmentActivity, 因為內置UI extensions組件中有用到FragmentActivity的特性。雖然這裡還沒有用到所謂的UI extensions組件,為了後面繼續學習,這裡就先改了哈。
package com.test.renderpdf;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.foxit.sdk.common.Library;
import com.foxit.sdk.common.PDFException;
import com.foxit.sdk.PDFViewCtrl;
import com.foxit.sdk.pdf.PDFDoc;
public class MainActivity extends FragmentActivity {
private PDFViewCtrl pdfViewCtrl = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String sn = "Jm9uLlPzu31Xeg9DMkMCjTJ21fyDRcmmgsj6r1OpithuPTLmet8RLw==";
String key = "ezJvj90ntWp39JsXIV02hAneK+hiBbdSf8QJK/OtLsbugh81DetHZ2mytsJxCjTVbg84YCcakEMtqn5EtJylgi9le8qSQka+CDSUKaXx7mzfXeKeRXKUKWZo9YvjUdhJOZv4bEUVKon7M6A70Ewt+vi0EJCt8DruGsI5vzUdxjW335VDgrpdXP8WaXFHSunwmFerH/7lgYErxA/hpZK9keeo8lw/yWOVgnAByoIiaqaiQATSgyBMKRANkKp78H+oYWTdj7qNb5UNkq2sKordoCRjCmer5lSKOnEK5jPI7PETlNMi/vkWzSVndHCDNICQH7BaJWA+vwRJqW0E1m1vXXUizXeSuxmu3RtQk4QwYlgmE4cd6z2bl9RjLErHD2pi4y8je8opLN2Tziw+EgDhho1snyDbIWi3ynol2nv/1vt3x7CY7HpMZ1QrJNCv8z9OdGH0zc22RPU8hA47QE4ftH77kQvrjgWu1oZH07dseGrZxj5q+lvbMwZegKAHqXyzj7XDa7084FSQVRwE+vvA+0ZdjRCoJRf32RAmEbx4kF+cwIiDmQliFy+WphFmSKq8NYZA7c+pMRtWZaUHWk1hJ1XI7l175uQZb1WBNAIndRAXy5H3pettxGxIBrJqn4zfE7Kgyf5zvBWMr9+8KY0No1bRz5fHuds2XbiwzrVzV946uQJ1N+NPdX0Zy+u3LqXsskMXKBXseHQAO5g+b/ts4SXzLbSsHWPHCHGgv3wxH09+O2tQ3YH3sb48T6pbIj/oM6PzppRmC9YqIpfKpCZGvAcsYMU3sIHRmZOr5HxKC65VX3oX2CMlTXXJHH0wf9wFqIyxUGwFWL3EvsBo5UR282KDyquz74xgvyhM1F3FZQxD4UJgZBDJvr/mrpziFF3sUuXCjpCwDT2gC25VSng9sm2w5FIh7MjJsRlK+hPCn5tuYZcKzMJHQG9deNA5YwN6/f/KLlhxEJpzeWyiNA2PoV2CDt1hYLJeob+VVtirRNsZI447ym2hCBkjdd7uru3LweWVpPzWTdP3/2a7JkuGPJbhIKYu6LsK5I6ghCfE0vvPR3Ne+aHk97+ytZRJHI8RDGujE5yQ0BIrP0u9ZuTQvPq8xSGJFWHDLsVgxMG0b2I+6jnSBoUo/cJDFT/dNID1anbesGHL73waVHDN0U5cR34Ry97dSBjoD6wgF8UR8roPmbEYNp7GVRrSbenJHQ==";
// Load "librdk.so" library.
System.loadLibrary("rdk");
try {
// initialize the library
Library.init(sn, key);
} catch (PDFException e) {
e.printStackTrace();
return;
}
// Inflate the view and get a reference to PDFViewCtrl
setContentView(R.layout.activity_main);
pdfViewCtrl = (PDFViewCtrl) findViewById(R.id.pdfviewer);
// Load a document
String path = "/mnt/sdcard/getting_started_android.pdf";
try {
PDFDoc document = PDFDoc.createFromFilePath(path);
document.load(null);
pdfViewCtrl.setDoc(document);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
try {
Library.release();
} catch (PDFException e) {
e.printStackTrace();
}
}
@Override
protected void onResume() {
super.onResume();
if(pdfViewCtrl != null)
pdfViewCtrl.requestLayout();
}
}
就這些代碼就可以完成渲染一個PDF文檔,核心代碼加起來還不到10行,好像是挺酷的哦。跑起來看看效果。
PS: 因為要讀取真機或者模擬器中的文檔,所以要在“app/src/main/ AndroidManifest.xml”中設置用戶權限,允許用戶讀寫sdcard. 代碼如下:
其實是只用添加
這一句,為了方便閱讀,我都是把整個代碼都貼出來。
4. Run the app:
我用Android 4.4.2 (API 19) x86架構的模擬器來跑該app, 運行起來後如下圖:

這幾行代碼就可以實現一個簡單的PDF閱讀器了,還自帶有縮放和翻頁功能:


上面已經成功實現了渲染顯示PDF文檔的功能,真的只花了幾行代碼,大伙感興趣的可以試試。有一點大家要注意下,我這裡用的是API 19的模擬器來運行該app, 如果大家用API 23以上(包括23)的話,如果想讀取sdcard中的文檔,要麼需要添加代碼進行動態權限獲取,要麼可以把“app/build.gradle”下的targetSdkVersion 改為低於23的版本即可。
好了,今天就到這裡吧,後面將繼續學習。
Android開發之程序員必須要懂得Android的重要設計理念2
上篇文章介紹了Android開發的設計理念的一部分,並沒有得到博友們的多大認可,只看到了一位博友在下面留言期待下一篇文章的發表,為了這小小的唯一支持,我決定繼續把後面的8
安卓手機被木馬奪命鎖鎖住了怎麼辦
有網友安裝了“天天酷跑專用修改(超哥破解)”、“妖艷制作”和“讓任何人都驚喜的東西”
Activity啟動模式launchMode
今天要講得是Activity的四種啟動模式launchMode屬性,該屬性用於配置該Activity的加載模式,該屬性支持以下4個屬性值。standard:標准模式,也是
Android帶動畫效果的彈窗
在網絡加載數據的時候通常需要很多時間,這個時候程序裡面經常需要寫一個提示正在加載數據的彈窗,這篇文章用兩種方式實現帶動畫效果的Dialog:幀動畫實現和GIF動態圖實現,