Android xUtils 가 3.0 으로 업 데 이 트 된 후 기본 사용 규칙 에 대한 자세 한 설명
10055 단어 xutils3.0
xUtils 소개
xUtils 는 실 용적 인 안 드 로 이 드 도 구 를 많이 포함 하고 있 습 니 다.
xUtils 는 큰 파일 업로드,보다 전면적 인 http 요청 프로 토 콜 지원(10 가지 서술 어)을 지원 합 니 다.더욱 유연 한 ORM,더 많은 이벤트 주석 지원,헷 갈 리 지 않 는 영향 을 받 지 않 습 니 다.
xUitls 최저 호 환 안 드 로 이 드 2.2(api level 8)
저 는 항상 최신 것 을 사용 하 는 것 을 좋아 합 니 다.xUtils 3.0 은 업 데 이 트 된 지 얼마 되 지 않 았 고 비교적 큰 재 구성 입 니 다.바 이 두 에서 사용 하 는 규칙 은 대체적으로 3.0 이전 입 니 다.그래서 3.0 을 사용 하 는 개발 자 들 이 용법 을 구 해 야 할 때 많은 어려움 을 겪 었 습 니 다.그래서 여기 서 xUtils 3.0 의 사용 규칙 을 간단하게 소개 합 니 다.기능 을 어떻게 도입 하 는 지 에 대해 사실은 본 고의 내용 이 아니 지만 이 글 의 마지막 부분 에서 도입 방식 을 간단하게 설명 했다.
1.xUtils 의 IOC 프레임 워 크
xUtils 를 사용 하 는 첫 번 째 단 계 는 자신의 Application 클래스 를 만들어 야 합 니 다.코드 는 다음 과 같 습 니 다.
public class LYJApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);//Xutils
}
}
AndroidManifest.xml 의 application 태그 에 다음 코드 를 추가 합 니 다.
android:name=".LYJApplication"
이렇게 초기 화하 면 완성 이다.IOC 프레임 워 크 를 사용 하 는 코드 는 다음 과 같 습 니 다.
import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.Event;
import org.xutils.view.annotation.ViewInject;
import org.xutils.x;
@ContentView(value = R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
@ViewInject(value = R.id.mybut)
private Button mybut;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
x.view().inject(this);
}
@Event(value = R.id.mybut,type = View.OnClickListener.class)
private void onButtonClick(View v){
switch (v.getId()){
case R.id.mybut:
Toast.makeText(this," Xutils IOC ",Toast.LENGTH_SHORT).show();
break;
}
}
}
다음 과 같은 몇 가지 설명 이 필요 합 니 다.첫째,IOC 를 사용 하려 면 모두 개인 이 어야 합 니 다.그렇지 않 으 면 무효 입 니 다.여기 서 프 리 젠 테 이 션 을 합 니 다.IOC 프레임 워 크 에 사용 되 는 주 해 를 사용 하 는 구성원 변수 와 방법 을 모두 Public 로 바 꿀 수 있다 고 믿 지 않 으 면 모두 무효 입 니 다.물론 ContentView 를 제외 하고 예외 입 니 다.
둘째,모든 IOC 구성원 변 수 를 사용 합 니 다.사용 할 때 x.view().inject(this)이후 에 앞 에 쓰 면 프로그램 이 무 너 집 니 다.
2.xUtils 이미지 불 러 오기 기능
현재 우 리 는 두 가지 권한 을 설정 해 야 합 니 다.다음 과 같 습 니 다.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
다음은 네트워크 그림 을 imageView 에 불 러 오 는 것 입 니 다.x.image().bind(image,"http://pic.baike.soso.com/p/20090711/20090711101754-314944703.jpg");
매개 변 수 를 설정 할 수도 있 습 니 다:
ImageOptions imageOptions = new ImageOptions.Builder()
.setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120))//
.setRadius(DensityUtil.dip2px(5))//ImageView
.setCrop(true)// ImageView wrap_content, crop.
.setImageScaleType(ImageView.ScaleType.CENTER_CROP)
.setLoadingDrawableId(R.mipmap.ic_launcher)//
.setFailureDrawableId(R.mipmap.ic_launcher)//
.build();
x.image().bind(image, "http://pic.baike.soso.com/p/20090711/20090711101754-314944703.jpg",imageOptions);
두 번 째 인 자 를 그림 파일 경로 로 설정 하면 SD 카드 에서 그림 을 불 러 옵 니 다.3.xUtils 조작 데이터베이스
한 앱 에서 데이터 베 이 스 를 조작 하 는 곳 이 많다 는 것 을 잘 알 고 있 습 니 다.로그 인 여부 와 같이 로그 인 을 해 야 조작 할 수 있 는 곳 이 있 습 니 다.그러면 전역 변수 가 분명 합 니 다.따라서 데이터 베 이 스 를 application 에 초기 화하 고 데이터 베 이 스 를 얻 는 방법 을 제공 하여 응용 프로그램의 모든 곳 에서 데이터 베 이 스 를 직접 얻 을 수 있 도록 해 야 합 니 다.데이터 베 이 스 를 조작 하지 않 으 면 중복 되 는 가 져 오기 와 방출 은 메모리 의 불필요 한 소 모 를 증가 시 킬 수 밖 에 없다.
데이터베이스 초기 화:
public class LYJApplication extends Application {
private DbManager.DaoConfig daoConfig;
public DbManager.DaoConfig getDaoConfig() {
return daoConfig;
}
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);//Xutils
daoConfig = new DbManager.DaoConfig()
.setDbName("lyj_db")//
.setDbVersion(1)//
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
// TODO: ...
// db.addColumn(...);
// db.dropTable(...);
// ...
}
});//
}
}
위의 설명 은 명확 합 니 다.설명 할 점 은 setDbdir(new File("/sdcard")입 니 다.데이터 베 이 스 를 저장 하고 싶 은 곳 에 저장 할 수 있 습 니 다.설정 하지 않 으 면 데이터 베 이 스 는 기본적으로/data/데이터/응용 프로그램/database/xxx.db 에 저 장 됩 니 다.여기 서 우 리 는 기본적으로 응용 프로그램 아래 에 놓 을 것 이다.우 리 는 먼저 실체 클래스 를 만 듭 니 다.다음 과 같 습 니 다.
@Table(name="lyj_person")
public class LYJPerson {
@Column(name = "id", isId = true)
private int id;
@Column(name = "name")
private String name;
@Column(name = "age")
private String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
실체 류 를 통 해 데이터 베 이 스 를 직접 조작 할 수 있다.우 리 는 응용 프로그램 에 다음 과 같은 코드 를 추가 하여 데이터베이스 에 데 이 터 를 추가 합 니 다.
DbManager db = x.getDb(daoConfig);
LYJPerson person1=new LYJPerson();
person1.setName("liyuanjinglyj");
person1.setAge("23");
LYJPerson person2=new LYJPerson();
person2.setName("xutilsdemo");
person2.setAge("56");
try {
db.save(person1);
db.save(person2);
} catch (DbException e) {
e.printStackTrace();
}
Activity 에서 데이터베이스 데 이 터 를 가 져 오 는 코드 는 다음 과 같 습 니 다.
DbManager db = x.getDb(((LYJApplication)getApplicationContext()).getDaoConfig());
try {
List<LYJPerson> lyjPersons=db.selector(LYJPerson.class).findAll();
for (int i=0;i<lyjPersons.size();i++){
Log.i("liyuanjinglyj","LYJPerson"+i+".name="+lyjPersons.get(i).getName());
Log.i("liyuanjinglyj","LYJPerson"+i+".name="+lyjPersons.get(i).getAge());
}
} catch (DbException e) {
e.printStackTrace();
}
그러면 다음 과 같은 결 과 를 얻 을 수 있 을 것 이다.4.xUtils 의 네트워크 요청
Android 는 UI 스 레 드 가 네트워크 작업 과 관련 될 수 없다 고 규정 하기 때문에 여 기 는 주로 Xutils 의 비동기 네트워크 요청 을 간단하게 소개 하고 동기 화 된 자체 탐 구 를 합 니 다.
사용 형식 은 다음 과 같 습 니 다:
RequestParams params = new RequestParams("http://blog.csdn.net/mobile/experts.html");
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Document doc = Jsoup.parse(result);
Element div = doc.select("div.list_3").get(0);
Elements imgs = div.getElementsByTag("img");
for (int i = 0; i < imgs.size(); i++) {
Element img = imgs.get(i);
Log.i("liyuanjinglyj",img.attr("alt"));
}
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(Callback.CancelledException cex) {
}
@Override
public void onFinished() {
}
});
CSDN 모 바 일 블 로그 전문가 의 HTML 페이지 정 보 를 얻 었 습 니 다.아래 로 그 를 보면 Xutils 네트워크 기능 이 매우 강하 다 는 것 을 알 수 있 습 니 다.본 고 는 마지막 으로 CSDN APP 를 대충 모방 한 소스 코드 를 첨부 했 습 니 다.뜻 이 있 는 사람 은 다운로드 할 수 있 습 니 다.그 안에 다른 개발 프레임 워 크 를 사용 하고 저 는 그림 을 전문 적 으로 처리 하 는(afinal)입 니 다.모두 xUtils 는 afinal 의 진화 판 이 라 고 말 하지만 사진 에 있어 서 우 리 는 xUtils 가 아직 부족 하 다 고 생각한다.
http://download.csdn.net/detail/liyuanjinglyj/9379103
5.Android Studio 로 xUtils 프로젝트 가 져 오기
다운로드 주 소 는 다음 과 같 습 니 다.
https://github.com/wyouflf/xUtils3/tree/master
다운로드 한 프로젝트 를 Project 디 렉 터 리 로 복사 합 니 다.
2 settings.gradle 파일 에 추가:
include ':app',':xutils'
세 번 공사 에 컴 파일 하 다.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
compile project(':xutils')
}
4.xutils 폴 더 의 build.gradle 버 전 을 만 드 는 프로젝트 와 일치 하도록 최소 버 전 으로 조정 합 니 다.
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 15
targetSdkVersion 23
versionCode 20151224
versionName version
}
build.gradle(Project:XutilsDemo)에 다음 코드 를 추가 합 니 다.
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
그 중 빨간색 은 추 가 된 코드 로 표 시 됩 니 다.Sync now 를 누 르 면 xUtils 를 사용 할 수 있 습 니 다.
관련 읽 기:
xutils 3.0 으로 다운로드 항목 업데이트
위 에서 말 한 것 은 편집장 이 소개 한 안 드 로 이 드 xUtils 가 3.0 으로 업 데 이 트 된 후의 기본 적 인 사용 규칙 에 대한 상세 한 설명 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
xutils 3.0 으로 다운로드 항목 업데이트xUtils 는 큰 파일 업로드,보다 전면적 인 http 요청 프로 토 콜 지원(10 가지 서술 어)을 지원 합 니 다.더욱 유연 한 ORM,더 많은 이벤트 주석 지원,헷 갈 리 지 않 는 영향 을 받 지 않 습 니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.