導航:首頁 > 操作系統 > android如何使用框架

android如何使用框架

發布時間:2023-04-09 12:31:59

① 如何使用android的搜索框架

當你需要在你的應用程序中提供搜索服務時,通過使用Android的搜索框架,應用程序將顯示一個自定義搜索對話框來處理用戶的搜索請求。通過一個簡單的搜索按鈕或從您的應用程序中調用API,搜索對話框就會顯示在屏幕的頂部,並會自動顯示應用程序圖標。

本文將教你如何為你的應用程序提供一個自定義搜索對話框。這樣做,給您的用戶提供一個標准化的搜索體驗,並能增加如語音搜索和搜索建議等功能。

基礎知識

Android的搜索框架將代您管理的搜索對話框,您不需要自己去開發一個搜索框,不需要擔心要把搜索框放什麼位置,也不需要擔心搜索框影響您當前的界面。所有的這些工作都由SearchManager類來為您處理(以下簡稱「搜索管理器」),它管理的Android搜索對話框的整個生命周期,並執行您的應用程序將發送的搜索請求,返回相應的搜索關鍵字。

當用戶執行一個搜索,搜索管理器將使用一個專門的Intent把搜索查詢的關鍵字傳給您在配置文件中配置的處理搜索結果的Activity。從本質上講,所有你需要的就是一個Activity來接收Intent,然後執行搜索,並給出結果。具體來說,你需要的做的事就包括以下內容:

一個搜索配置
我們用個XML配置文件來對搜索對話框進行配置,包括一些功能的配置,如文本框,設置語音搜索和搜索建議中顯示的提示文字等。

一個用來處理搜索請求的Activity
這個Activity用來接收搜索查詢的內容,然後搜索您的數據並顯示搜索結果。

一種用戶執行搜索的途徑
默認情況下,一旦你配置了一個可搜索的Activity,設備搜索鍵(如果有)將調用搜索對話框。然而,你應該始終提供另一種手段,讓用戶可以調用搜索對話框,如在選項菜單中的搜索按鈕或其他用戶界面上的按鈕,因為不是所有的設備提供一個專門的搜索鍵。

創建一個搜索對話框配置文件

搜索框配置文件是一個用來配置您的應用程序中搜索框的設置的XML文件,這個文件一般命名為searchable.xml,並且必須保存在項目的res/xml/目錄下。

配置文件的根節點必須為,可以有一個或多個屬性。如下所示:

[html] view
plainprint?

<?xml version="1.0" encoding="utf-8"?>

<searchable xmlns:android="http://schemas.android.com/apk/res/android"

android:label="@string/searchLabel" android:hint="@string/searchHint">

</searchable>
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/searchLabel" android:hint="@string/searchHint">
</searchable>

上面的配置文件中,除android:hint屬性外,其它都是一個搜索對話框必須的配置項,android:label是一個必須的屬性,它的值為一個string資源引用,不能直接用字元串,通常會是應用程序的名稱(盡管它是一個必須的屬性,但通常情況下是不顯示出來的,除非你開啟了搜索建議功能)。android:hint是配置搜索框的輸入提示信息,也必須引用string.xml中配置的字元串資源,不能直接使用字元串。

可以配置很多的屬性,但大部分屬性都只是在使用搜索建議和語音搜索時進行配置,盡管如此,我們建議你一定要配置android:hint,用於提示用戶需要輸入的信息。

接下來,你需要把這個配置文件放到你的應用程序中。

創建一個可用於搜索的Activity

當用戶從一個搜索框執行搜索時,搜索管理器(Search
Manager)會通過ACTION_SEARCH Intent
把要搜索的內容(關鍵字)發送到一個可執行搜索的Activity。這個Acitivity查詢數據並顯示結果。

定義一個可搜索的Activity

如果你還沒有準備好,那麼就創建一個用來執行搜索的Activity,聲明它可以響應ACTION_SEARCH
Intent ,並且增加搜索框配置信息。為此,你需要添加一個元素和一個元素在你的manifest文件中的節點。如下所示:

[html] view
plainprint?

<application ... >

<activity android:name=".MySearchableActivity" >

<intent-filter>

<action android:name="android.intent.action.SEARCH" />

</intent-filter>

<meta-data android:name="android.app.searchable"

android:resource="@xml/searchable"/>

</activity>

...

</application>
<application ... >
<activity android:name=".MySearchableActivity" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
...
</application>

中的android:name屬性值必須為」android.app.searchable」,android:resource屬性值必須引用上面提到的res/xml/目錄下的搜索配置文件(本例中的res/xml/searchable.xml)。

請注意,只有配置了上面的meta-data節點的Activity的節點才能執行搜索,如果想在整個應用程序中都可以調用搜索框,可以進行如下配置:

[html] view
plainprint?

<application ... >

<activity android:name=".MySearchableActivity" >

<intent-filter>

<action android:name="android.intent.action.SEARCH" />

</intent-filter>

<meta-data android:name="android.app.searchable"

android:resource="@xml/searchable"/>

</activity>

<activity android:name=".AnotherActivity" ... >

</activity>

<!—這個配置就可以讓你在整個應用程序中調用搜索框 -->

<meta-data android:name="android.app.default_searchable"

android:value=".MySearchableActivity" />

...

</application>
<application ... >
<activity android:name=".MySearchableActivity" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
<activity android:name=".AnotherActivity" ... >
</activity>
<!—這個配置就可以讓你在整個應用程序中調用搜索框 -->
<meta-data android:name="android.app.default_searchable"
android:value=".MySearchableActivity" />
...
</application>

上面代碼中android:name=」android.app.default_searchable」
定義一個響應搜索框搜索請求的名稱,android:value指定是由哪個Activity響應並執行搜索。當我們在應用程序中的
OtherAcitivity中執行搜索請求時,MySearchableActivity將會被載入用於執行搜索並顯示搜索結果。
執行一個搜索

當一個Activity聲明為可搜索時,執行實際的搜索包括三個步驟:接收查詢,檢索你的數據,並提交結果。

通常情況下,你的搜索結果需要在一個ListView中展現,所以你用於執行搜索的Acitivity要繼承ListActivity,這樣,可以方便的訪問ListView的Api。

接收搜索查詢

當從搜索對話框執行搜索時,剛才配置的可用於搜索的Acitivity將會被Intent激活,同時帶著一些搜索相關的參數,你需要檢查Intent並做出搜索響應,如下所示:

[java] view
plainprint?

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.search);Intent intent = getIntent();

//判斷是否是搜索請求

if (Intent.ACTION_SEARCH.equals(intent.getAction())) {

//獲取搜索的查詢內容(關鍵字)

String query = intent.getStringExtra(SearchManager.QUERY);

//執行相應的查詢動作

doMySearch(query);

}

}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);

Intent intent = getIntent();
//判斷是否是搜索請求
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
//獲取搜索的查詢內容(關鍵字)
String query = intent.getStringExtra(SearchManager.QUERY);
//執行相應的查詢動作
doMySearch(query);
}
}

doMySearch()方法將根據關鍵字查詢資料庫,或從網路上查詢數據,如果是耗時的搜索,你還需要使用進度條,來告訴用戶搜索正在進行,最後返回結果後,可以調用ListView的setAdapter()方法將結果顯示在ListView中。

調用搜索對話框

你可以從應用程序中的任何一個地方調用onSearchRequested()方法激活搜索框,比如從菜單中或者一個按鈕等。你也要以在
onCreate()方法中調用setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL),這樣,當用戶按下鍵盤上的按鍵時,將會自動激活搜索框。

搜索框和普通對話框一樣,浮動在屏幕的最上方,它不會改變任何Activity堆棧狀態,沒有任何Activity生命周期中的方法會被調用,只是當搜索框出現就,正在運行的Activity會失去輸入焦點。

如果你要在執行搜索時,進行別的操作,可以重寫onSearchRequested()方法,如下所示:

[java] view
plainprint?

@Override

public boolean onSearchRequested() {

//這個方法中干你想乾的事,比如做一些被始化工作

pauseSomeStuff();

return super.onSearchRequested();

}
@Override
public boolean onSearchRequested() {
//這個方法中干你想乾的事,比如做一些被始化工作
pauseSomeStuff();
return super.onSearchRequested();
}

如果當前的Activity就是響應搜索請求的Activity時,會有以下兩種情況:

默認情況下,ACTION_SEARCH
Intent將會創建一個新的Activity,並調用onCreate()方法,這個新的Activity會顯示在最前面,你將同時有兩個
Activity實例。當你按「返回」鍵里,會回到沒有執行搜索前的一個Activity。

另一種情況是配置了android:launchMode=」singleTop」的Activity,這時,我們需要在
onNewIntent(Intent)方法中處理搜索請求,如下所示:

[java] view
plainprint?

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.search);

handleIntent(getIntent());

}@Override

protected void onNewIntent(Intent intent) {

setIntent(intent);

handleIntent(intent);

}private void handleIntent(Intent intent) {

if (Intent.ACTION_SEARCH.equals(intent.getAction())) {

String query = intent.getStringExtra(SearchManager.QUERY);

doMySearch(query);

}

}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
handleIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
}

private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
doMySearch(query);
}
}

相應的Activity配置如下

[html] view
plainprint?

<activity android:name=".MySearchableActivity"

android:launchMode="singleTop" >

<intent-filter>

<action android:name="android.intent.action.SEARCH" />

</intent-filter>

<meta-data android:name="android.app.searchable"

android:resource="@xml/searchable"/>

</activity>
<activity android:name=".MySearchableActivity"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>

如何給搜索框增加參數

要給搜索框傳遞參數,我們需要重寫onSearchRequested()方法,如下所示:

[java] view
plainprint?

@Override

public boolean onSearchRequested() {

Bundle appData = new Bundle();

appData.putBoolean(MySearchableActivity.JARGON, true);

startSearch(null, false, appData, false);

return true;

}
@Override
public boolean onSearchRequested() {
Bundle appData = new Bundle();
appData.putBoolean(MySearchableActivity.JARGON, true);
startSearch(null, false, appData, false);
return true;
}

我們的Activity在收到搜索框的搜索請求時,通過如下方法獲取參數:

[java] view
plainprint?

Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);

if (appData != null) {

boolean jargon = appData.getBoolean(MySearchableActivity.JARGON);

}
Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
if (appData != null) {
boolean jargon = appData.getBoolean(MySearchableActivity.JARGON);
}

最後我們來看看如何使用android的語音搜索:

只需要對我們的搜索配置文件做如下改動,你的搜索就支持語音搜索了,配置文件如下所示:

[html] view
plainprint?

<?xml version="1.0" encoding="utf-8"?>

<searchable xmlns:android="http://schemas.android.com/apk/res/android"

android:label="@string/searchLabel"

android:hint="@string/searchHint"

android:voiceSearchMode="showVoiceSearchButton|launchRecognizer">

</searchable>

② 安卓10怎麼用xp框架

安裝MagiskManager就可以了。
用官方工具安裝MagiskManager,版本不低於V17.0。在MagiskManager里,模塊里搜索Riku-core,然後安裝就可以了。
Xposed框架(XposedFramework)是一套開源的、在Android高許可權模式下運行的框架服務,可以在不修改APK文件的情況下影響程序運行(修改系統)的框架服務,基於它可以製作出許多功能強大的模塊,且在功能不沖突的情況下同時運作。當前,PerAPPSetting(為每個應用設置單獨的dpi或修改許可權)、XPrivacy(防止隱私泄露)、對原生Launcher替換圖標等應用或功能均基於此框架。

③ android getidentifier框架怎麼使用

主要由兩種方法:
1. 不把圖片放在res/drawable下,而是存放在src某個package中(如:com.drawable.resource),這種情況下的調用方法為:
String path = "com/drawable/resource/imageName.png";
InputStream is = getClassLoader().getResourceAsStream(path);
Drawable.createFromStream(is, "src");
2. 如果還是希望直接使用res/drawable中的圖片,就需要通過下面的方法了:
假設創建工程的時候,填寫的package名字為:com.test.image
int resID = getResources().getIdentifier("imageName", "drawable", "com.test.image");
Drawable image = getResources().getDrawable(resID);

④ Android 模塊之旅:ARoutrer框架使用教程

隨著公司項目越來越大,人員增多,項目會出現難維護、新人入職後,需要花費很多時間去熟悉項目。最重要的是,每次編譯時間真的太久了!!!為了解決這個問題,項目重構、模塊化需要提上日程。項目拆分成模塊之後,頁面的跳轉就不能直接startActivity 調用具體的activity了,因為這個Activity已經在另外一個模塊中,直接用顯示引用是提示不出來的,這時需要通過藉助路由庫來實現頁面的跳轉,當然通過反射的方式也是可以跳轉到對應頁面的。通過這樣的路由跳轉,而不是顯示引用,就達到了模塊之間解耦的目的,在不需要的時候,可以不需要引入這個模塊編譯,提高開發速度,發布的時候又能很方便的集成進來,功能不受影響,這就實現了模塊化的第一步。路由框架推薦使用阿里開源的ARouter路由框架,畢竟是大廠開源的框架,穩定性、可靠性也相對較高。

路由路徑,我們可以封裝一個 RouterManger 工具類放在 moudle_base 模塊中,統一管理整個項目的 Path 及路由框架的初始化操作, 示例如下:

我們經常需要在目標頁面中配置一些屬性,比方說"是否需要登陸"之類的
可以通過 Route 註解中的 extras 屬性進行擴展,這個屬性是一個 int值,換句話說,單個int有4位元組,也就是32位,可以配置32個開關
剩下的可以自行發揮,通過位元組操作可以標識32個開關,通過開關標記目標頁面的一些屬性,在攔截器中可以拿到這個標記進行業務邏輯判斷

ARouter更加詳細的使用教程可以前往官方GitHub查閱,上述為個人使用過程中覺得需要記錄下來東西,不足之處,敬請見諒

⑤ 如何在安卓原生APP中使用MUI框架

先用Android Studio創建一個新項目(MyFirstMUI)。
1、導入jar包,可從HBuilder-Integrate工程的libs中選擇,具體要導入哪些jar包可從SDK中的Feature-Android.xls中查看。
2、加入APP資源:

①在工程目錄下的創建assets文件夾,並在assets目錄下添加apps目錄
②在apps目錄下創建應用ID同名目錄好隱
③在應用ID同名目錄下創建www目錄
④將應用資源和應用配置文件(manifest.json)拷貝到www目錄下

其中「H5B1EA68D」目錄名稱為應用manifest.json中的id名稱,務必一致。

添加control.xml文件和properties.xml文件到assets->data目錄下

其中control.xml文件的appid值為HBuilder應用的appid,必須與應用manifest.json中的id值完全一致;appver為應用的版本號,用於應用資源的升級,必須保持與manifest.json中的version -> name值完全一致;version值為應用基座版本號(plus.runtime.innerVersion返回的值),不要隨意修改。

Properites文件用於對應JS類名和Android包名的對應關系,用戶可指敗以根據開發項目使用到的插件對文件進行添加或刪改。

這兩個文件都可從HBuilder-Integrate工程中拷貝過來進行修改。

3、復制所需的資源文件到drawable和layout文件夾中:

4、修改AndroidManifest.xml文件
文件中的versionCode與唯襪顫manifest.json中version -> code值一致;versionName與manifest.json中version -> name值一致。根據HBuilder-Integrate工程中的AndroidManifest.xml文件添加所的功能許可權。
5、添加代碼編譯測試
注意RInfomation要連同其目錄一起復制進項目中。

⑥ 騰訊QMUI Android框架使用(一)入門及目錄

把項目的 theme 的 parent 指向 QMUI.Compat,至此,QMUI 可以正常工作。

你可以通過在項目中的 theme 中用

的形式來覆蓋 QMUI 組件的默認表現。具體可指定的屬性名請參考 @style/QMUI.Compat 中的屬性。

對 Button 提供圓角功能,支持以下特性:
1.指定圓角的大小。
2.分別指定不同方向的圓角大小。
3.指定圓角的大小為高度的一半,並跟隨高度變化自適應圓角大小。
4.支持分別指定背景色和邊框色,指定顏色時支持使用 color 或 ColorStateList。

提供了一系列常用的對話框,解決了使用系統默認對話框時在不同 Android 版本上的表現不一致的問題。使用不同的 Builder 來構建不同類型的對話框,這些 Builder 都擁有設置 title 和添加底部按鈕的功能,不同的 Builder 特有的作用如下:
1.MessageDialogBuilder: 消息類型的對話框 Builder。通過它可以生成一個帶標題、文本消息、按鈕的對話框。
2.ConfirmMessageDialogBuilder: 帶 Checkbox 的消息確認框 Builder。
3.EditTextDialogBuilder: 帶輸入框的對話框 Builder。
4.MenuDialogBuilder: 菜單對話框 Builder。
5.CheckableDialogBuilder: 單選類型的對話框 Builder。
6.MultiCheckableDialogBuilder: 多選類型的對話框 Builder。
7.CustomDialogBuilder: 自定義對話框內容區域的 Builder。
8..AutoResizeDialogBuilder: 隨鍵盤升降自動調整 Dialog 高度的 Builder

類似 CSS 里 float: left 的浮動布局,從左到右排列子 View 並自動換行。支持以下特性:
1.控制子 View 之間的垂直/水平間距。
2.控制子 View 的水平對齊方向(左對齊/居中/右對齊)。
3.限制子 View 的個數或行數。

通用的空界面控制項,支持顯示 loading、主標題和副標題、圖片。

用於橫向多個 Tab 的布局,包含多個特性:
1.可以用 xml 或 QMUITabSegment 提供的 set 方法統一配置文字顏色、icon 位置、是否要下劃線等。
2.每個 Tab 都可以非常靈活的配置,內容上支持文字和 icon 的顯示,icon 支持選中態,支持內容的排版對齊方向設置,支持顯示紅點,3.支持插入自定義的 View,支持監聽雙擊事件等。
4.可以通過 setupWithViewPager(ViewPager) 方法與 ViewPager 綁定。

一個進度條控制項,通過顏色變化顯示進度,支持環形和矩形兩種形式,主要特性如下:
1.支持在進度條中以文字形式顯示進度,支持修改文字的顏色和大小。
2.可以通過 xml 屬性修改進度背景色,當前進度顏色,進度條尺寸。
3.支持限制進度的最大值。

通用的列表,常用於 App 的設置界面,注意其父類不是 ListView 而是 LinearLayout,所以一般要配合 ScrollView 使用。提供了 Section 的概念,用來將列表分塊。 配合 QMUIGroupListView.Section, QMUICommonListItemView 和 使用。

提供一個浮層展示在屏幕中間,提供了以下兩種樣式:
1.使用 QMUITipDialog.Builder 生成,提供了一個圖標和一行文字的樣式, 其中圖標有 Loading、成功、失敗等類型可選。
2.使用 QMUITipDialog.CustomBuilder 生成,支持傳入自定義的 layoutResId。

提供為圖片添加圓角、邊框、剪裁到圓形或其他形狀等功能。

在 TextView 的基礎上支持文字豎排。

下拉刷新控制項。支持自定義 RefreshView(表示正在刷新的 View),觸發刷新的位置等特性。

提供一個浮層,支持自定義浮層的內容,支持在指定 View 的任一方向旁邊展示該浮層,支持自定義浮層出現/消失的動畫。

相比 TextView,修正了兩個常見問題:
修正了 TextView 與 ClickableSpan 一起使用時,點擊 ClickableSpan 也會觸發 TextView 的事件的問題。
修正了 TextView 默認情況下如果添加了 ClickableSpan 之後就無法把點擊事件傳遞給 TextView 的 Parent 的問題。

使 TextView 能自動識別 URL、電話、郵箱地址,相比 TextView 有以下特點:
1.可以設置鏈接的樣式。
2.可以設置鏈接的點擊事件。

1.支持顯示表情的偽 TextView(繼續自定義 View,而不是真正的 TextView), 實現了 TextView 的 maxLine、ellipsize、textSize、textColor 等基本功能。
2.支持與 QMUITouchableSpan 配合使用實現內容可點擊。

支持二級結構的列表的折疊與展開;支持滾動時懸浮當前 section header; 支持在section list 或 section item list 前後添加自定義 View。

對 QMUITopBar 的包裹類,並代理了 QMUITopBar 的方法。配合 QMUIWindowInsetLayout 使用,可使 QMUITopBar 在支持沉浸式狀態欄的界面中頂部延伸到狀態欄。

⑦ Android搭建應用框架系列之BaseActivity

其實寫 BaseActivity 的時候,都需要結合不同的 App 的需求以及應用架構來實現的,沒有固定的實現方式。所以這里結合前面幾篇文章來寫一個 BaseActivity

結合前面的文章說的, BaseActivity 應該有下面這些內容

應用中往往鍵耐喊少不了載入動畫,所以 BaseActivity 也應該寫一個公共的顯示和隱藏載入框的方法,結合前文的 IProgressDialog 介面。由於 Android 的 ProgressDialog 註解過時, Google 不推薦使用,那麼這里就通過 AlertDialog+ProgressBar 簡單實現下面的效果

我們都知道 AlertDialog 是有畝備一個底色背景的,所以這里先寫一個 Style 讓底色背景透明

接下來就是這個彈框的布局

然後就是創建 AlertDialog 設置布稿野局

把前面的 Style 在創建 AlertDialog.Builder() 傳入即可讓底色背景透明,然後通過 AlertDialog 的 setView() 方法就可以自定義布局了。

定義一個 FragmentManager 方便操作 Fragment 的時候使用

對應 Rx1.x 版本的 CompositeSubscription ,將請求介面統一綁定起來

然後在 onDestroy() 進行統一的解綁

結合前文封裝的 RealmHelper 幫助類,實現 Realm 的實例並且定義一個 RealmAsyncTask

然後在 onStop 裡面進行清除

首先會在 BaseActivity 定義一個默認的布局 act_single_fragment.xml

其中 content 是用來放置內容的區域,然後 toolbar_layout.xml 是 ToolBar 的布局

提供一個方法供外部實現 ToolBar 樣式,默認是 TitleFragment

TitleFragment 就是一個簡單的頭部樣式,如圖

最後處理返回鍵的回調方法

通過上面的說明,最終 BaseActivity 如下

⑧ 怎樣搭建一個android開發框架

搭建Android開發環境
准備工作:下載Eclipse、JDK、Android SDK、ADT插件
下載地址:Eclipse:http://www.eclipse.org/downloads/
JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html
Android SDK:http://developer.android.com/sdk/index.html
ADT:http://developer.android.com/tools/sdk/eclipse-adt.html
1、安裝和配置JAVA開發環境:
①把准備好的Eclipse和JDK安裝到本機上(最好安裝在全英文路徑下),並給JDK配置環境變數,其中JDK的變數值為JDK安裝路徑的根目錄,如我的為:D:\Program Files\Java\jdk1.7.0_02;
②打開命令提示符(cmd),輸入java -version命令,顯示如下圖則說明JAVA環境變數已經配置好了。
2、安裝ADT插件:
①打開已安裝好的Eclipse,選擇菜單欄上的「Help」->在彈出的下拉框中單擊選擇「Install new software...」;
②在新打開的對話框中我們完全可以直接在"Work with"中輸入:https://dl-ssl.google.com/android/eclipse/在線安裝ADT插件,但由於Google的伺服器搭建在國外,所以通過這種方式安裝起來會比較慢,而且可能會出現人品差死活裝不上的情況,所以不推薦在線安裝。
③我推薦直接通過下載好的ADT插件壓縮包進行安裝(此種方式可以在離線環境下進行)。具體步驟是:在新打開的對話框中點擊「Add」按鈕->在打開的對話框中點擊「Archive」按鈕選擇之前已經下載好保存在本地硬碟的ADT插件壓縮包,至於上面的「Name」可以隨便取,這只是一個代號而已,沒什麼實際作用。
④在上一步中點擊「Ok」按鈕後我們會發現中間的空白處出現了兩行復選框,單擊"Select All"按鈕選中所有的復選框,這步過後一路「Next」,需要「Accept」的就選中「Accept」,直到點擊「Finish」結束,這樣ADT插件就安裝好了。整個過程需要的時間視機器性能而定。安裝好ADT插件後,Eclipse的工具欄會出現一排Android的圖標,如下圖:
3、安裝SDK:
①把下載好的Android SDK安裝到本機上(最好安裝在全英文路徑下),並為Android SDK配置環境變數。Android SDK的環境變數值為SDK安裝目錄下的platform-tools文件夾和tools文件夾子目錄路徑,如我的分別為:E:\My Studying\Android\android-sdk\platform-tools、E:\My Studying\Android\android-sdk\tools,在變數值中,兩個路徑用逗號隔開。
②打開命令提示符(cmd),分別輸入android -h和adb命令,顯示如下圖則說明Android SDK環境變數已經配置好了。
③打開Android SDK的安裝目錄,雙擊 "SDK Manager"->在打開的窗口中先選擇你需要安裝的SDK版本,其中「Status」表示該SDK包是否安裝,如我選的是「Android2.2(API 8)」(我的之前已經安裝過了,所以「Status」為「Installed」)->再點擊「Install packages...」按鈕,在彈出來的窗口中最好選「Accept All」這樣才能安裝你剛才選的所有的包->最後點「Install」按鈕就開始安裝了,整個過程會很慢,這需要你的耐心。
另外我們還可以通過在Eclipse上的工具欄中點擊下圖指示的圖標打開「SDK Manager」然後進行安裝,這樣和上面的SDK安裝方式一樣,就不累述了。
④最後再選擇Eclipes主菜單上的"Windows"->選擇"preferrnces";
⑤在彈出來的對話框中選中左邊欄的「Android」->通過右側的「Browse...」按鈕選擇SDK的安裝路徑根目錄->點擊最下方的「Ok」按鈕,這樣SDK就在Eclipse上載入成功了。
4、創建Android模擬器(AVD):
①打開Eclipse->在Eclipse的工具欄上單擊下圖指示的圖標打開「Android Virsual Device Manager」窗口;
②在「Android Virsual Device Manager」窗口單擊「New」按鈕->在彈出來的窗口中"Name"可以隨便取;「Target」指模擬器的系統版本;「SD Card」的"size"是指手機存儲卡的大小,只要你不在模擬器上裝太多的應用,一般給個二三十MB就夠了;「Skin」是指屏幕的解析度大小,其中「Built in」是一般手機常用標准屏幕解析度大小,而「Resolution」是自定義屏幕解析度大小,具體做法,可以根據自身情況選擇。->一切設置好後點擊「Create AVD」,這時一個模擬器就創建好了。如果有必要,我們可以創建多個模擬器用於測試時使用。
附:Android模擬器型號以及其對應的解析度大小:

Standard Width Height DAR Pixeis
HVGA 480 * 320 3:2 153,600
QVGA 320 * 240 4:3 76,800
WQVGA400 400 * 240 5:3 96,000
WQVGA432 432 * 240 9:5 103,680
WVGA800 800 * 480 5:3 384,000
WVGA852 854 * 480 409,920

至此為止,在Eclipse上就已經成功搭建Android開發環境了。

⑨ 如何使用ZBLibrary-Android快速開發框架

1.下載:
點擊右邊這個地址 h hub.com/TommyLemon/Android-ZBLibrary

點擊DownloadZip即可。

2.解壓

3.用ADT-Bundle(集成了ADT插件的Eclipse)或 AndroidStudio打開
ADT打開
File > Import > Android > Existing Android Code Into Workspace > browse
> 打開 解壓後的文件目錄(Android-ZBLibrary-master)下的ZBLibrary(ADT)目錄 > Finish
AndroidStudio打開
File > Open > 打開 解壓後的文件目錄(Android-ZBLibrary-master)下的ZBLibrary(AndroidStudio)目錄 > OK

4.運行
ADT運行
歷返右鍵ZBLibrary Demo > Run as > Android Application
AndroidStudio運行
Run > Run app

如果不能成功運行,點擊以下鏈沖此接查看解決方法
.cnblogs.com/tommylemon/p/5426583.html

5.將自己的項目依賴ZBLibrary
ADT依賴
1)在自己的項目的workspace下打開ZBLibrary,方法和第3步一樣
2)右鍵自己的項目 > Properties > Android > Library欄目中點擊 add > 選擇ZBLibray > OK > OK
AndroidStudio依賴
1)打開自己的項目散爛迅 > 然後打開ZBLibrary,方法和第3步一樣
2)右鍵app > Open Mole Settings > Dependencies > add(點擊"+")> Mole Dependency > 選擇 ZBLibrary > OK > OK
3)右鍵app > Open Mole Settings > 選擇app > Dependencies > 如果有android-support-v4包,選擇並點擊 "-" 移除 > OK,沒有就 Cancel
4)右鍵app > Open Mole Settings > 選擇ZBLibrary > Dependencies >
①如果有android-support-v4包,選擇並點擊 "-" 移除
②點擊"+" > File dependency > 選擇libs目錄下其中一個 > OK
③添加libs下其它jar包依賴,方法和②一樣 > OK

6.重復第4步

7.查看Demo
ADT查看
打開ZBLibraryDemoApp,方法和第3步一樣
AndroidStudio查看 (Android-ZBLibrary-master下的ZBLibrary(AndroidStudio)目錄)
Windows下在資源管理器中查看,Mac下在Finder中查看

⑩ android 怎麼使用mvvm框架

MVC、MVP、MVVM
首先,我們先大致了解下Android開發中常見的模式。
MVC
View:XML布局文件。
Model:實體模型(數據的獲取、存儲、數據狀態變化)。
Controllor:對應於Activity,處理數據、業務和UI。
從上面這個結構來看,Android本身的設計還是符合MVC架構的,但是Android中純粹作為View的XML視圖功能太弱,我們大量處理View的邏輯只能寫在Activity中,這樣Activity就充當了View和Controller兩個角色,直接導致Activity中的代碼大爆炸。相信大多數Android開發者都遇到過一個Acitivty數以千行的代碼情況吧!所以,更貼切的說法是,這個MVC結構最終其實只是一個Model-View(Activity:View&Controller)的結構。
MVP
View:對應於Activity和XML,負責View的繪制以及與用戶的交互。
Model:依然是實體模型。
Presenter:負責完成View與Model間的交互和業務邏輯。
前面我們說,Activity充當了View和Controller兩個角色,MVP就能很好地解決這個問題,其核心理念是通過一個抽象的View介面(不是真正的View層)將Presenter與真正的View層進行解耦。Persenter持有該View介面,對該介面進行操作,而不是直接操作View層。這樣就可以把視圖操作和業務邏輯解耦,從而讓Activity成為真正的View層。
但MVP也存在一些弊端:
Presenter(以下簡稱P)層與View(以下簡稱V)層是通過介面進行交互的,介面粒度不好控制。粒度太小,就會存在大量介面的情況,使代碼太過碎版化;粒度太大,解耦效果不好。同時對於UI的輸入和數據的變化,需要手動調用V層或者P層相關的介面,相對來說缺乏自動性、監聽性。如果數據的變化能自動響應到UI、UI的輸入能自動更新到數據,那該多好!
MVP是以UI為驅動的模型,更新UI都需要保證能獲取到控制項的引用,同時更新UI的時候要考慮當前是否是UI線程,也要考慮Activity的生命周期(是否已經銷毀等)。
MVP是以UI和事件為驅動的傳統模型,數據都是被動地通過UI控制項做展示,但是由於數據的時變性,我們更希望數據能轉被動為主動,希望數據能更有活性,由數據來驅動UI。
V層與P層還是有一定的耦合度。一旦V層某個UI元素更改,那麼對應的介面就必須得改,數據如何映射到UI上、事件監聽介面這些都需要轉變,牽一發而動全身。如果這一層也能解耦就更好了。
復雜的業務同時也可能會導致P層太大,代碼臃腫的問題依然不能解決。
MVVM
View:對應於Activity和XML,負責View的繪制以及與用戶交互。
Model:實體模型。
ViewModel:負責完成View與Model間的交互,負責業務邏輯。
MVVM的目標和思想與MVP類似,利用數據綁定(Data Binding)、依賴屬性(Dependency Property)、命令(Command)、路由事件(Routed Event)等新特性,打造了一個更加靈活高效的架構。
數據驅動
在常規的開發模式中,數據變化需要更新UI的時候,需要先獲取UI控制項的引用,然後再更新UI。獲取用戶的輸入和操作也需要通過UI控制項的引用。在MVVM中,這些都是通過數據驅動來自動完成的,數據變化後會自動更新UI,UI的改變也能自動反饋到數據層,數據成為主導因素。這樣MVVM層在業務邏輯處理中只要關心數據,不需要直接和UI打交道,在業務處理過程中簡單方便很多。
低耦合度
MVVM模式中,數據是獨立於UI的。
數據和業務邏輯處於一個獨立的ViewModel中,ViewModel只需要關注數據和業務邏輯,不需要和UI或者控制項打交道。UI想怎麼處理數據都由UI自己決定,ViewModel不涉及任何和UI相關的事,也不持有UI控制項的引用。即便是控制項改變了(比如:TextView換成EditText),ViewModel也幾乎不需要更改任何代碼。它非常完美的解耦了View層和ViewModel,解決了上面我們所說的MVP的痛點。
更新UI
在MVVM中,數據發生變化後,我們在工作線程直接修改(在數據是線程安全的情況下)ViewModel的數據即可,不用再考慮要切到主線程更新UI了,這些事情相關框架都幫我們做了。
團隊協作
MVVM的分工是非常明顯的,由於View和ViewModel之間是鬆散耦合的:一個是處理業務和數據、一個是專門的UI處理。所以,完全由兩個人分工來做,一個做UI(XML和Activity)一個寫ViewModel,效率更高。
可復用性
一個ViewModel可以復用到多個View中。同樣的一份數據,可以提供給不同的UI去做展示。對於版本迭代中頻繁的UI改動,更新或新增一套View即可。如果想在UI上做A/B Testing,那MVVM是你不二選擇。
單元測試
有些同學一看到單元測試,可能腦袋都大。是啊,寫成一團漿糊的代碼怎麼可能做單元測試?如果你們以代碼太爛無法寫單元測試而逃避,那可真是不好的消息了。這時候,你需要MVVM來拯救。
我們前面說過了,ViewModel層做的事是數據處理和業務邏輯,View層中關注的是UI,兩者完全沒有依賴。不管是UI的單元測試還是業務邏輯的單元測試,都是低耦合的。在MVVM中數據是直接綁定到UI控制項上的(部分數據是可以直接反映出UI上的內容),那麼我們就可以直接通過修改綁定的數據源來間接做一些Android UI上的測試。
通過上面的簡述以及模式的對比,我們可以發現MVVM的優勢還是非常明顯的。雖然目前Android開發中可能真正在使用MVVM的很少,但是值得我們去做一些探討和調研。
如何構建MVVM應用框架
如何分工
構建MVVM框架首先要具體了解各個模塊的分工。接下來我們來講解View、ViewModel、Model它們各自的職責所在。
View
View層做的就是和UI相關的工作,我們只在XML、Activity和Fragment寫View層的代碼,View層不做和業務相關的事,也就是我們在Activity不寫業務邏輯和業務數據相關的代碼,更新UI通過數據綁定實現,盡量在ViewModel裡面做(更新綁定的數據源即可),Activity要做的事就是初始化一些控制項(如控制項的顏色,添加RecyclerView的分割線),View層可以提供更新UI的介面(但是我們更傾向所有的UI元素都是通過數據來驅動更改UI),View層可以處理事件(但是我們更希望UI事件通過Command來綁定)。 簡單地說:View層不做任何業務邏輯、不涉及操作數據、不處理數據,UI和數據嚴格的分開。
ViewModel
ViewModel層做的事情剛好和View層相反,ViewModel只做和業務邏輯和業務數據相關的事,不做任何和UI相關的事情,ViewModel 層不會持有任何控制項的引用,更不會在ViewModel中通過UI控制項的引用去做更新UI的事情。ViewModel就是專注於業務的邏輯處理,做的事情也都只是對數據的操作(這些數據綁定在相應的控制項上會自動去更改UI)。同時DataBinding框架已經支持雙向綁定,讓我們可以通過雙向綁定獲取View層反饋給ViewModel層的數據,並對這些數據上進行操作。關於對UI控制項事件的處理,我們也希望能把這些事件處理綁定到控制項上,並把這些事件的處理統一化,為此我們通過BindingAdapter對一些常用的事件做了封裝,把一個個事件封裝成一個個Command,對於每個事件我們用一個ReplyCommand 去處理就行了,ReplyCommand 會把你可能需要的數據帶給你,這使得我們在Vie,具體見 MVVM Light Toolkit 使用指南的 Command 部分 。再強調一遍:ViewModel 不做和UI相關的事。

閱讀全文

與android如何使用框架相關的資料

熱點內容
pdf閱讀器刪除 瀏覽:979
考研人如何緩解壓力 瀏覽:822
買電暖壺哪個app便宜 瀏覽:505
洛克王國忘記伺服器了怎麼辦 瀏覽:782
為什麼cf登錄伺服器沒反應 瀏覽:695
伺服器如何獲取文件列表 瀏覽:672
creo五軸編程光碟 瀏覽:14
蘋果app網路驗證在哪裡 瀏覽:14
博科清空命令 瀏覽:384
簡愛英文pdf 瀏覽:376
cnc編程有前途嗎 瀏覽:586
聯想app怎麼聯網 瀏覽:722
linuxftp命令登錄 瀏覽:1000
android獲取圖片縮略圖 瀏覽:646
神戶制鋼螺桿壓縮機 瀏覽:29
差分演化演算法 瀏覽:567
中山市加密軟體 瀏覽:446
mc反編譯源碼 瀏覽:141
企業商城網站源碼 瀏覽:411
shell腳本編程是什麼 瀏覽:762