Android XUtilsフレームワーク
14322 ワード
https://github.com/wyouflf/xUtils/
xUtilsの概要 xUtilsには、多くの実用的なandroidツールが含まれています. xUtilsは大きなファイルアップロードをサポートし、より包括的なhttpリクエストプロトコルサポート(10種類の述語)をサポートし、より柔軟なORMを持ち、より多くのイベント注釈サポートを提供し、混同の影響を受けない... xUItls最小互換android 2.2(api level 8) 現在、xUtilsには主に4つのモジュールがあります. DbUtilsモジュール: androidのormフレームワークは、1行のコードで削除・変更できます. はトランザクションをサポートし、デフォルトで閉じます. は、テーブル名、カラム名、外部キー、一意性制約、NOT NULL制約、CHECK制約などを注釈でカスタマイズできます(混同が必要な場合はテーブル名とカラム名を注釈してください). は外部キーのバインドをサポートし、エンティティを保存すると、外部キー関連エンティティが自動的に保存または更新されます. 外部キー関連エンティティを自動的にロードし、遅延ロードをサポートする. は、チェーン表現クエリー、より直感的なクエリーの意味をサポートし、以下の説明またはsampleの例を参照します.
ViewUtilsモジュール: androidのiocフレームワークは、UI、リソース、イベントバインドを完全に注釈することができます. 新しいイベントバインド方式は、混同ツールを使用して混同した後も正常に動作します. は現在、一般的な20種類のイベントバインディングをサポートしており、ViewCommonEventListenerクラスとパッケージcomを参照してください.lidroid.xutils.view.annotation.event.
HttpUtilsモジュール: は同期、非同期方式の要求をサポートする. は大きなファイルのアップロードをサポートし、大きなファイルをアップロードするとoomしません. はGET、POST、PUT、MOVE、COPY、DELETE、HEAD、OPTIONS、TRACE、CONNECT要求をサポートする. ダウンロードは301/302リダイレクトをサポートし、Content-Dispositionに基づいてダウンロードしたファイルの名前を変更するかどうかを設定することをサポートする. は、テキストコンテンツの要求(デフォルトではGET要求のみ有効)を返してキャッシュをサポートし、デフォルトの期限切れ時間と現在の要求に対する期限切れ時間を設定します.
BitmapUtilsモジュール: bitmapをロードするときは、bitmapロード中に発生するoomやandroidコンテナが急速にスライドするときに発生する画像のずれなどを考慮する必要はありません. は、ネットワークピクチャとローカルピクチャのロードをサポートする. メモリ管理lruアルゴリズムを使用して、bitmapメモリをよりよく管理します. スレッドのロードスレッド数、キャッシュサイズ、キャッシュパス、ロード表示アニメーションなどを設定できます...
xUtilsクイック開発フレームワークを使用するには、次の権限が必要です.
混同時の注意事項: Androidデフォルト混同構成${sdk.dir}/tools/proguard/proguard-androidを追加します.txt xUtilsの注釈タイプを混同しないで、混同構成を追加します:-keep class*extends java.lang.annotation.Annotation { *; } DbUtilsモジュールを使用して永続化されたエンティティークラスを混同しない、またはすべてのテーブルとカラム名@Table(name=「xxx」),@Id(column=「xxx」),@Column(column=「xxx」),@Foreign(column=「xxx」,@foreign=「xxx」);
DbUtilsの使用方法:
ViewUtilsの使用方法完全注釈方式は、UIバインディングおよびイベントバインディングを行うことができる. findViewByIdやsetClickListenerなどは不要です.
HttpUtilsの使用方法:
一般getメソッド
HttpUtilsを使用してファイルをアップロードするか、サーバにデータをコミットする(postメソッド)
HttpUtilsを使用してファイルをダウンロードします.はブレークポイントの継続をサポートし、いつでもダウンロードタスクを停止し、タスク を開始する.
BitmapUtilsの使い方
その他(サンプルコードはsampleフォルダのコードを参照)
出力ログログログLogUtils
xUtilsの概要
xUtilsクイック開発フレームワークを使用するには、次の権限が必要です.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
混同時の注意事項:
DbUtilsの使用方法:
DbUtils db = DbUtils.create(this);
User user = new User(); // User id , @ID
user.setEmail("[email protected]");
user.setName("wyouflf");
db.save(user); // saveBindingId id
...
//
Parent entity = db.findById(Parent.class, parent.getId());
List<Parent> list = db.findAll(Parent.class);//
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));
// IS NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));
// IS NOT NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));
// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset
List<Parent> list = db.findAll(Selector.from(Parent.class)
.where("id" ,"<", 54)
.and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30))
.orderBy("id")
.limit(pageSize)
.offset(pageSize * pageIndex));
// op "in" , Iterable ( List )
Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));
// op "between" , Iterable ( List )
Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String[]{"1", "5"}));
DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name") name
List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));
...
List<DbModel> dbModels = db.findDbModelAll(sql); // sql
db.execNonQuery(sql) // sql
...
ViewUtilsの使用方法
// xUtils view id, 。
@ViewInject(R.id.textView)
TextView textView;
//@ViewInject(vale=R.id.textView, parentId=R.id.parentView)
//TextView textView;
@ResInject(id = R.string.label, type = ResType.String)
private String label;
// , id
// id @OnClick({R.id.id1, R.id.id2, R.id.id3})
// or @OnClick(value={R.id.id1, R.id.id2, R.id.id3}, parentId={R.id.pid1, R.id.pid2, R.id.pid3})
// ViewCommonEventListener com.lidroid.xutils.view.annotation.event。
@OnClick(R.id.test_button)
public void testButtonClick(View v) { //
...
}
...
// Activity :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewUtils.inject(this); // view
...
textView.setText("some text...");
...
}
// Fragment :
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.bitmap_fragment, container, false); // fragment
ViewUtils.inject(this, view); // view
...
}
// PreferenceFragment :
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ViewUtils.inject(this, getPreferenceScreen()); // view
...
}
//
// inject(View view);
// inject(Activity activity)
// inject(PreferenceActivity preferenceActivity)
// inject(Object handler, View view)
// inject(Object handler, Activity activity)
// inject(Object handler, PreferenceGroup preferenceGroup)
// inject(Object handler, PreferenceActivity preferenceActivity)
HttpUtilsの使用方法:
一般getメソッド
HttpUtils http = new HttpUtils();
http.send(HttpRequest.HttpMethod.GET,
"http://www.lidroid.com",
new RequestCallBack<String>(){
@Override
public void onLoading(long total, long current, boolean isUploading) {
testTextView.setText(current + "/" + total);
}
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
textView.setText(responseInfo.result);
}
@Override
public void onStart() {
}
@Override
public void onFailure(HttpException error, String msg) {
}
});
HttpUtilsを使用してファイルをアップロードするか、サーバにデータをコミットする(postメソッド)
RequestParams params = new RequestParams();
params.addHeader("name", "value");
params.addQueryStringParameter("name", "value");
// BodyParamsEntity,
// UrlEncodedFormEntity("application/x-www-form-urlencoded")。
params.addBodyParameter("name", "value");
// MultipartEntity("multipart/form-data"),
// "multipart/related",xUtils MultipartEntity subType "related"。
// params.setBodyEntity(httpEntity) HttpEntity( :
// MultipartEntity,BodyParamsEntity,FileUploadEntity,InputStreamUploadEntity,StringEntity)。
// json :params.setBodyEntity(new StringEntity(jsonStr,charset));
params.addBodyParameter("file", new File("path"));
...
HttpUtils http = new HttpUtils();
http.send(HttpRequest.HttpMethod.POST,
"uploadUrl....",
params,
new RequestCallBack<String>() {
@Override
public void onStart() {
testTextView.setText("conn...");
}
@Override
public void onLoading(long total, long current, boolean isUploading) {
if (isUploading) {
testTextView.setText("upload: " + current + "/" + total);
} else {
testTextView.setText("reply: " + current + "/" + total);
}
}
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
testTextView.setText("reply: " + responseInfo.result);
}
@Override
public void onFailure(HttpException error, String msg) {
testTextView.setText(error.getExceptionCode() + ":" + msg);
}
});
HttpUtilsを使用してファイルをダウンロードします.
HttpUtils http = new HttpUtils();
HttpHandler handler = http.download("http://apache.dataguru.cn/httpcomponents/httpclient/source/httpcomponents-client-4.2.5-src.zip",
"/sdcard/httpcomponents-client-4.2.5-src.zip",
true, // , 。 RANGE 。
true, // , 。
new RequestCallBack<File>() {
@Override
public void onStart() {
testTextView.setText("conn...");
}
@Override
public void onLoading(long total, long current, boolean isUploading) {
testTextView.setText(current + "/" + total);
}
@Override
public void onSuccess(ResponseInfo<File> responseInfo) {
testTextView.setText("downloaded:" + responseInfo.result.getPath());
}
@Override
public void onFailure(HttpException error, String msg) {
testTextView.setText(msg);
}
});
...
// cancel()
handler.cancel();
...
BitmapUtilsの使い方
BitmapUtils bitmapUtils = new BitmapUtils(this);
//
bitmapUtils.display(testImageView, "http://bbs.lidroid.com/static/image/common/logo.png");
// ( / , )
bitmapUtils.display(testImageView, "/sdcard/test.jpg");
// assets ( assets )
bitmapUtils.display(testImageView, "assets/img/wallpaper.jpg");
// ListView PauseOnScrollListener
listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));
listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true, customListener));
その他(サンプルコードはsampleフォルダのコードを参照)
出力ログログログLogUtils
// TAG, : className.methodName(L:lineNumber)
// LogUtils.allowD = false,LogUtils.allowI = false..., log。
// log LogUtils.customLogger = new xxxLogger();
LogUtils.d("wyouflf");