androidlibrary使用
㈠ android中Library層起什麼作用
Library層就是通常的庫層(靜態庫和動態庫),在庫中你可以實現自己的演算法(不和底層打交道),也是實現訪問底層的介面,從而供framework或者應用調用。希望能幫到你。
㈡ Android Studio下如何新建Library供多個工程使用
一
1 右鍵點擊項目就會出現任務欄選擇最後一個properties
2 Add library可以導入jar包供程序使用這兩種好像跟你的不符合
三、建立鏈接.so文件動態調用
㈢ android studio怎麼導入library
android studio導入library方法:
注意:library project一定要保證有自己的build.gradle,如果沒有,應該用Eclipse導出該工程
1.在Eclipse中選擇要導出的項目,然後依次選擇菜單 file->export->Android->Generate Gradle buildfiles. 之後依次點擊next到finish即可
點擊第一項Invalidate and Restart,待Android studio重啟即可解決問題,然後就可以用上library project了
㈣ android library中怎樣使用butterknife
配置:
用gradle配置的時候加入:
compile 'com.jakewharton:butterknife:6.1.0'
注意是加在Mole: app的gradle文件中.
加上之後不用運行什麼命令,直接Sync一下就可以在External Libraries裡面看到butterknife.
功能1: 再也不用寫findViewById()啦.
以前的:
mTextView1 = (TextView) findViewById(R.id.butter_text_view_1);
現在可以這樣實現:
首先在變數聲明的時候加上註解:
@InjectView(R.id.butter_text_view_2)
TextView mTextView2;
如果id找不到,會在編譯的時候報錯.
之後在設置好布局之後調用ButterKnife.inject():
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo_butter_knife);
//using butter knife
ButterKnife.inject(this);
}
之後View對象就可以直接使用了.
需要注意的是View變數聲明的時候不能為private或者static.
除了Activity之外,你可以提供其他的View Root,來獲取對象(執行注入).
還可以用來簡化Adapter裡面的ViewHolder:
ButterKnife in Fragment
在Fragment中也可以使用ButterKnife來獲取View:
public class SimpleFragment extends Fragment {
@InjectView(R.id.fragment_text_view)
TextView mTextView;
public SimpleFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_simple, container, false);
ButterKnife.inject(this, view);
mTextView.setText("TextView in Fragment are found!");
return view;
}
}
ButterKnife in Adapter ViewHolder
Adapter有一種常用的優化策略,就是使用ViewHolder來減少findViewById()的重復調用.
以前寫過相關的博文: http://www.cnblogs.com/mengdd/p/3254323.html
用了ButterKnife之後, ViewHolder的使用可以變成這樣:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.person_item_layout, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Person person = getItem(position);
if (null != person) {
holder.name.setText(person.getName());
holder.age.setText(String.valueOf(person.getAge()));
holder.location.setText(person.getLocation());
holder.work.setText(person.getWork());
}
return convertView;
}
static class ViewHolder {
@InjectView(R.id.person_name)
TextView name;
@InjectView(R.id.person_age)
TextView age;
@InjectView(R.id.person_location)
TextView location;
@InjectView(R.id.person_work)
TextView work;
public ViewHolder(View view) {
ButterKnife.inject(this, view);
}
}
可以看到ViewHolder類加了一個帶參數View的構造方法,用註解標記每個欄位,再也不需要在getView()方法里調用findViewById()方法了.
㈤ 如何構建帶有Android Library Project的工程
在項目根目錄下建立一個libraries文件夾,移動你要使用的library
project到libraries目錄(為什麼是移動?本人試過復制到工程,但復制過來的庫工程裡面的src目錄下的代碼會丟失)
注意:你的library
project一定要保證有自己的build.gradle,如果沒有,應該用Eclipse導出該工程
在Eclipse中選擇要導出的項目,然後依次選擇菜單
file->export->Android->Generate
Gradle
build
files.
之後依次點擊next到finish即可
回到Android
studio
打開settings.gradle,添加include
':libraries:你的庫工程名稱'
ctrl+alt+shift+s
打開
project
structure
在左側面板選中mole,在中間面板選中mole名,再在右邊面板選中denpendecies
在面板的最右邊出現一個加號,點擊+號,選擇第三項mole
denpendecy
此時彈出一個對話框,顯示你的library
project
,選中它,點擊OK,最後在
project
structure面板依次點擊Apply,OK
完成以上步驟,有可能會遇到如下問題:
1
報錯:類似於:
那是因為你的library
project的build.gradle里的配置的SDK版本與你現有工程的build.gradle所配置的SDK版本不一致,修改library
project的build.gradle里的SDK版本,使它與現有工程一致就可以解決
例如library
project的build.gradle
原有工程的build.gradle
把library
project的build.gradle對應的欄位值參照原有工程來修改,修改完畢後,rebuild一下工程
2
在rebuild工程後仍報錯
此時依次打開File--Invalidate
Caches/Restart,彈出對話框
點擊第一項Invalidate
and
Restart,待Android
studio重啟即可解決問題,然後你就可以用上你的library
project了
㈥ 安卓怎麼調用library
1.在AndroidStudio中導入Library項目 1 啟動AndroidStudio後,打開你需要接收Library的項目。比如有兩個項目,項目A,和Library項目B,那麼打開項目A。圖中所示為項目的結構圖,點擊右上角的File菜單。 2 在下拉菜單中依次找到New— —Import Mole,點擊打開項目導入窗口。注意導入的是Mole而不是Project,如果是Project的話AndroidStudio會自動打開一個新的窗口編輯,那樣的話就是不Library了。 3 在打開的窗口中點擊右側的"..."瀏覽窗口,在文件夾窗口中找到你要導入的Library項目的位置,選擇後點擊底部的OK按鈕導入。 4 導入窗口中顯示了該Mole(項目)的詳細信息,點擊Finish完成導入。需要注意的是導入到AndoridStudio項目中的Library也必須是AndroidStudio項目,不能是Eclipse項目,如果是Eclipse項目的話,需要選擇導出AndroidStudio項目。 5 在項目首頁中選擇Project標簽,可以看到項目的文件結構圖中多出了我們剛才導入的項目。Library的導入就完成了,接下來的步驟中需要把這個Library項目添加到原項目中,才能正常的引用Librara項目中的內容。 END 2. 把Library項目添加到源項目中 點擊頂部左上角的File菜單,在出現的下拉菜單中找到Project Structure,點擊進入。 在窗口左側選擇原始的項目後,點擊右側的Dependencies(依賴項)。可以看到項目當前引用的jar包等信息。 點擊右側的「+」添加按鈕,在下拉菜單中找到Mole Dependency(項目依賴),點擊打開項目選擇窗口。 選擇前面步驟中導入的Library項目後,點擊OK按鈕導入到原始項目中。 原始項目的依賴項中就出現了導入的Libray項目,這時在項目中就能正確引用Library項目中的內容了,點擊底部的OK按鈕完成添加。 出現是否更新CVS文件的提示窗口的話,點擊Yes進行進行更新和確認。 項目進入到Gradle自動構建的環節。構建完成後點擊底部的Messages,選中Gradle Build。在裡面提示了BUILD SUCCESSFUL,說明項目構建完成。這時Library項目就導入到原始項目完畢,可以在項目中正常引用Library項目中的內容了。
㈦ 如何使用Android Studio創建工程並把它設為Library工程
android studio中的library意味著mole,所以利用Android studio新建moudle,然後讓app依賴該moudle就可以了。
Android Studio中的Mole 相當於Eclipse 中的library
在使用Android Studio(以下簡稱AS)新建項目時都會有這樣一個概念:
Eclipse中的WorkSpace相當於AS中的Project;
Eclipse中的Project相當於AS中的Mole(只就新建而言)。
所以Eclipse中在一個WorkSpace中建立多個Project 等同於 在AS的Project中建立多個Mole。
㈧ 如何把android的library加到android工程中
在項目根目錄下建立一個libraries文件夾,移動你要使用的library project到libraries目錄(為什麼是移動?本人試過復制到工程,但復制過來的庫工程裡面的src目錄下的代碼會丟失)
注意:你的library project一定要保證有自己的build.gradle,如果沒有,應該用Eclipse導出該工程
在Eclipse中選擇要導出的項目,然後依次選擇菜單 file->export->Android->Generate Gradle build files. 之後依次點擊next到finish即可
回到Android studio
打開settings.gradle,添加include ':libraries:你的庫工程名稱'
ctrl+alt+shift+s 打開 project structure 在左側面板選中mole,在中間面板選中mole名,再在右邊面板選中denpendecies
在面板的最右邊出現一個加號,點擊+號,選擇第三項mole denpendecy
此時彈出一個對話框,顯示你的library project ,選中它,點擊OK,最後在 project structure面板依次點擊Apply,OK
完成以上步驟,有可能會遇到如下問題:
1 報錯:類似於:
那是因為你的library project的build.gradle里的配置的SDK版本與你現有工程的build.gradle所配置的SDK版本不一致,修改library project的build.gradle里的SDK版本,使它與現有工程一致就可以解決
例如library project的build.gradle
原有工程的build.gradle
把library project的build.gradle對應的欄位值參照原有工程來修改,修改完畢後,rebuild一下工程
2 在rebuild工程後仍報錯
此時依次打開File--Invalidate Caches/Restart,彈出對話框
點擊第一項Invalidate and Restart,待Android studio重啟即可解決問題,然後你就可以用上你的library project了
㈨ 如何創建android一個私有的library
創建library供多個工程共享代碼、資源是非常常見的需求,網上這種資料非常少,基本上都是講創建java工程,然後export,這種方式缺點非常多,大家可以自己google一下。
本文著重介紹如何創建Android library,並且在工程中使用此library提供的資源,具體步驟如下:
1. 創建一個Android工程,命名為MyLib
2. 進入工程設置選中Is Library
3. 創建另一個Android工程,命名為MyProj
4. 進入工程設置,添加MyLib
5. 在MyProj的AndroidManifest.xml中加入對library中activity的引用
<activity android:name="net.devdiv.mylib.MyLib" />
6. 由於編譯後library中的資源和引用它的project資源是合並在一起的,為了避免重名問題,需要對library中資源進行重命名
1). 把main.xml改為mylib.xml,同時修改MyLib.java代碼setContentView(R.layout.mylib);
2). strings.xml修改為
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mylibhello">String fetched from lib!</string>
<string name="mylib_app_name">MyLib</string>
</resources>
7. 在MyProj中引用MyLib的資源
package net.devdiv.myproj;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import net.devdiv.mylib.*;
import android.content.Intent;
public class MyProj extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = (TextView)findViewById(R.id.myprojtext);
tv.setText(R.string.mylibhello);
Intent it = new Intent(this, MyLib.class);
startActivity(it);
}
}
㈩ 如何創建Android library
創建library供多個工程共享代碼、資源是非常常見的需求,網上這種資料非常少,基本上都是講創建java工程,然後export,這種方式缺點非常多,大家可以自己google一下。
本文著重介紹如何創建Android library,並且在工程中使用此library提供的資源,具體步驟如下:
1. 創建一個Android工程,命名為MyLib
2. 進入工程設置選中Is Library
3. 創建另一個Android工程,命名為MyProj
4. 進入工程設置,添加MyLib
5. 在MyProj的AndroidManifest.xml中加入對library中activity的引用
<activityandroid:name="net.devdiv.mylib.MyLib"/>
6. 由於編譯後library中的資源和引用它的project資源是合並在一起的,為了避免重名問題,需要對library中資源進行重命名
1). 把main.xml改為mylib.xml,同時修改MyLib.java代碼setContentView(R.layout.mylib);
2). strings.xml修改為
<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<stringname="mylibhello">Stringfetchedfromlib!</string>
<stringname="mylib_app_name">MyLib</string>
</resources>
7. 在MyProj中引用MyLib的資源
packagenet.devdiv.myproj;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.widget.TextView;
importnet.devdiv.mylib.*;
importandroid.content.Intent;
{
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextViewtv=(TextView)findViewById(R.id.myprojtext);
tv.setText(R.string.mylibhello);
Intentit=newIntent(this,MyLib.class);
startActivity(it);
}
}
原文出處:http://www.devdiv.com/thread-36947-1-1.html