1. android studio 怎麼載入.so文件
1、在src/main中添加
jniLibs文件夾
,把.so復制進去
2、在build.gradle中就添加這么幾行
,
看圖
復制內容到剪貼板
sourceSets
{
main
{
jniLibs.srcDirs
=
['libs']
}
}
3、然後make
project
4、切換到android結構下,你會看到
jniLibs
中.so已經變成了.jar文件,證明已經成功
2. android程序是怎麼載入pak文件裡面的圖片、音頻等資源的
你說的是程序? 那就是用流了
android有很多那隻的方法可以使用--〉
下面就是讀取 assets 文件夾下面的 db 資料庫的代碼 -- 其他也是差不多的類似這個過程
InputStream is = getContext().getResources().getAssets().open("region.db");
FileOutputStream fis = new FileOutputStream(databaseName);
byte[] buffer = new byte[8192];
int count;
while ((count = is.read(buffer)) > 0) {
fis.write(buffer, 0, count);
}
fis.close();
is.close();
3. android 什麼時候載入xml文件
如果是spring的配置文件,由於事先在web.xml中已經注冊過了,所以在啟動的時候就被載入了; 如果是自定義的xml文件,如果在spring的配置文件中<import resource="context-trigger.xml"/>通過, 這種方式引入,也會在啟動的時候被載入; 其它的xml文件,只有在被調用的時候才會載入的內存中。
4. android怎麼載入本地html文件
1。獲取資源的輸入流
資源文件 sample.txt 位於 $PROJECT_HOME/assets/ 目錄下,可以在 Activity 中通過
Context.getAssets().open(「test.html」)
方法獲取輸入流。
注意:如果資源文件是文本文件則需要考慮文件的編碼和換行符。建議使用UTF-8和Unix換行符。
2. WebView 載入assets目錄下的html文件
資源文件 sample.html 位於 $PROJECT_HOME/assets/ 目錄下,可以通過以下代碼
WebView.loadUrl(「file:///android_asset/test.html」);
載入html文件。
5. Android WebView如何載入assets下的html文件
項目需求:將html文件以及所用到的圖片都放在
assets/html/
目錄下。然後在頁面上通過WebView來顯示直接付上代碼:
private
void
readHtmlFormAssets(){
WebSettings
webSettings
=
tipsWebView.getSettings();
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
}以上就是常用的webView顯示設置,通過上段代碼就可以成功顯示html文件,只要保證html代碼中圖片是相對地址,且能正確找到就能正常顯示網頁中所包含的圖片。(本例中圖片就位於同一目錄下。)顯示效果:點擊時可以縮放,圖片正常顯示。初次顯示會縮放至合理的大小。因此上段代碼是以後的通用代碼庫註:
WebView默認顯示效果就是100%
px
顯示,我想要的效果是縮放到合理大小讓內容全部可見。所以你可以通過
setInitialScale來設置縮放,不過不同screen
需要設置不一樣的比例,而這個參數又不好在xml中設置,所以比較麻煩。用了上面的代碼,這個問題也給解決了。I
also
experimented
with
setInitialScale
but
on
different
screen
sizes
and
web
page
sizes
that
won't
be
as
graceful
as
the
browsers
scaling.
6. android怎麼載入html
android載入html
主要有2種方案:
方案一:
啟動第三方瀏覽器或者安卓內置的瀏覽器進行載入先生html文件。
方案二:
使用android 自帶的webview控制項進行載入html文件或者網頁。
不常用方案有1種:
使用android控制項TextView進行載入html文件。
主要原理:
通過讀取html文件裡面的標簽進行解析相關的元素從而通過瀏覽器,或者android自帶的控制項進行顯示,其中webview控制項本質上就是一個瀏覽器,TextView顯示html內容就是通過解析標簽,元素通過內置方法轉化成相應帶有屬性的文本信息然後顯示到界面上。
詳細解決步奏:
方案一:
java">Uriuri=Uri.parse("http://www.XXXX.com");//要鏈接的地址或者html
Intentintent=newIntent(Intent.ACTION_VIEW,uri);
startActivity(intent);
缺點如果android中沒有瀏覽器,則無法啟動顯示相關內容。
方案二:
webview=(WebView)findViewById(R.id.WebView01);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://www.xxxx.com");//要鏈接的地址或者html
缺點:目前沒有什麼缺點,比其他2種好,天生為載入html文件而出生的
方案三:
不常用的方法,藉助函數Html.fromHtml()來解析html內容,並且進行顯示。
TextViewtext1=(TextView)findViewById(R.id.TextView02);
text1.setText(Html.fromHtml(「<fontsize='20'>網頁內容html</font>」));
缺點:載入速度慢於webview載入速度。
最後
推薦使用webview進行載入html內容,其特性優於其他2種載入方式
7. android 怎麼通過代碼載入xml文件內容
關鍵方法:public int getIdentifier(String name, String defType, String defPackage)
關於具體使用方法,舉例如下:
1、updatelog.xml文件位於res/xml/文件夾下:
<?xml version="1.0" encoding="utf-8"?>
<updatelog>
<release
version="1.0"
versioncode="1.1">
<log>1、這個文件在res/xml文件夾下;</log>
<log>2、這個文件的名字是「updatelog.xml」</log>
<log>3、這是一個xml文件</log>
</release>
8. 如何動態載入android的so文件,如何壓縮apk尺寸,androidapk
在Android中調用動態庫文件(*.so)都是通過jni的方式,而且往往在apk或jar包中調用so文件時,都要將對應so文件打包進apk或jar包,工程目錄下圖:
以上方式的存在的問題:
1、缺少靈活性比較類似靜態載入了(不是靜態載入),能載入的so文件綁定死了;
2、但so文件很多或很大時,會導致對應的apk和jar包很大;
3、不能動態的對so文件更新;
Android中載入so文件的提供的API:
void System.load(String pathName);
說明:
1、pathName:文件名+文件路勁;
2、該方法調用成功後so文件中的導出函數都將插入的系統提供的一個映射表(類型Map);
看到以上對System.load(String pathName);的函數說明可定有人會想到將so文件放到一個指定的目錄然後再通過參數pathName直接引用該目錄的路勁和對應的so文件問題不就解決了嗎?
這里有個問題被忽略了,那就是System.load只能載入兩個目錄路勁下的so文件:
1、/system/lib ;
2、安裝包的路勁,即:/data/data/<packagename>/…
而且這兩個路勁又是有許可權保護的不能直接訪問;
問題解決方法:
先從網路下載so文件到手機目錄(如:/test/device/test.so) –> 將test.so載入到內存(ByteArrayOutputStream) –> 然後保存到對用安裝包目錄;
具體代碼如下:
try {
String localPath = Environment.getExternalStorageDirectory() + path;
Log.v(TAG, "LazyBandingLib localPath:" + localPath);
String[] tokens = mPatterns.split(path);
if (null == tokens || tokens.length <= 0
|| tokens[tokens.length - 1] == "") {
Log.v(TAG, "非法的文件路徑!");
return -3;
}
// 開辟一個輸入流
File inFile = new File(localPath);
// 判斷需載入的文件是否存在
if (!inFile.exists()) {
// 下載遠程驅動文件
Log.v(TAG, inFile.getAbsolutePath() + " is not fond!");
return 1;
}
FileInputStream fis = new FileInputStream(inFile);
File dir = context.getDir("libs", Context.MODE_PRIVATE);
// 獲取驅動文件輸出流
File soFile = new File(dir, tokens[tokens.length - 1]);
if (!soFile.exists()) {
Log.v(TAG, "### " + soFile.getAbsolutePath() + " is not exists");
FileOutputStream fos = new FileOutputStream(soFile);
Log.v(TAG, "FileOutputStream:" + fos.toString() + ",tokens:"
+ tokens[tokens.length - 1]);
// 位元組數組輸出流,寫入到內存中(ram)
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = fis.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
// 從內存到寫入到具體文件
fos.write(baos.toByteArray());
// 關閉文件流
baos.close();
fos.close();
}
fis.close();
Log.v(TAG, "### System.load start");
// 載入外設驅動
System.load(soFile.getAbsolutePath());
Log.v(TAG, "### System.load End");
return 0;
} catch (Exception e) {
Log.v(TAG, "Exception " + e.getMessage());
e.printStackTrace();
return -1;
}