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