編輯:關於android開發
1.簡介
xUtils3 是 xUtils 的升級版,功能和性能都在提高,xUtils3 主要有四大模塊:注解模塊,聯網模塊,圖片加載模塊,數據庫模塊;
注解模塊:
用於在 Activity 或者 Fragment 中初始化布局文件,便於代碼更加簡潔;
聯網模塊:
xUtils3 支持超大文件(超過 2G)上傳,更全面的 http 請求協議支持(11 種謂詞),擁有更加靈活的 ORM,更多的事件注解支持且不受混淆影響;
圖片加載模塊:
加載圖片很方便並且不用擔心內存溢出,還可以圖片綁定支持 gif(受系統兼容性影響, 部分 gif 文件只能靜態顯示), webp; 支持圓角, 圓形, 方形等裁剪,支持自動旋轉.
數據庫模塊:
數據庫 api 簡化提高性能, 達到和 greenDao 一致的性能
2.注解模塊
①在 Activity 中使用注解
1.在 Application 的 oncreate 方法中加入下面代碼: x.Ext.init(this);
2.在 Activity 的 oncreate 方法中加入下面代碼: x.view().inject(this);
3.加載當前的 Activity 布局需要如下注解: @ContentView 加入到 Activity 的上方
4.給 View 進行初始化需要如下注解: @InjectView
5.處理控件的各種響應事件需要如下注解: @Envent
@Event(value = R.id.btn_database)
private void database(View view){
Toast.makeText(XUtils3Activity.this, "進入數據庫模塊單獨的",Toast.LENGTH_SHORT).show();
}
②在 Fragment 中使用注解
在onCreateView()中return super.onCreateView(inflater, container, savedInstanceState);改為return x.view().inject(this,inflater,container);
@ContentView(R.layout.fragment_demo)
public class DemoFragment extends Fragment {
@ViewInject(R.id.btn_fragment)
private Button button;
private Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context =getContext();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// return super.onCreateView(inflater, container, savedInstanceState);
return x.view().inject(this,inflater,container);
}
}
3.聯網模塊
①xUtils3 的 Get 和 Post 請求文本
//1.Get請求
//2.Post請求
RequestParams params = new RequestParams("http://api.m.mtime.cn/PageSubArea/TrailerList.api");
x.http().post(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Log.e("TAG", "xUtis3聯網請求成功==" + result);
// textView.setText("Get請求的結果——————" + result);
textView.setText("Post請求的結果——————" + result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e("TAG", "xUtis3聯網請求失敗==" + ex.getMessage());
textView.setText("xUtis3聯網請求失敗==" + ex.getMessage());
}
@Override
public void onCancelled(CancelledException cex) {
Log.e("TAG", "onCancelled==" + cex.getMessage());
}
@Override
public void onFinished() {
Log.e("TAG","onFinished==");
}
});
②xUtils3 文件下載
RequestParams params = new RequestParams("http://vfx.mtime.cn/Video/2016/09/15/mp4/160915092608935956_480.mp4");
//設置保存數據
params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/atguigu/480.mp4");
//設置是否可以立即取消下載
params.setCancelFast(true);
//設置是否自動根據頭信息命名
params.setAutoRename(false);
//設置斷點續傳
params.setAutoResume(true);
params.setExecutor(new PriorityExecutor(3, true));//自定義線程池,有效的值范圍[1, 3], 設置為3時, 可能阻塞圖片加載.
x.http().get(params, new Callback.ProgressCallback<File>() {
/**
* 當下載成功的時候回調這個方法,並且把下載到哪個路徑回傳過來
* @param file
*/
@Override
public void onSuccess(File file) {
Log.e("TAG","onSuccess=="+file.toString());
Toast.makeText(XUtils3NetActivity.this, "onSuccess=="+file.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e("TAG","onError=="+ex.getMessage());
}
@Override
public void onCancelled(CancelledException cex) {
Log.e("TAG","onCancelled=="+cex.getMessage());
}
@Override
public void onFinished() {
Log.e("TAG","onFinished==");
}
@Override
public void onWaiting() {
Log.e("TAG","onWaiting==");
}
@Override
public void onStarted() {
Log.e("TAG","onStarted==");
}
@Override
public void onLoading(long total, long current, boolean isDownloading) {
progressbar.setMax((int) total);
progressbar.setProgress((int) current);
Log.e("TAG", "onLoading=="+current+"/"+total+",isDownloading=="+isDownloading);
}
});
③xUtils3 大文件上傳
RequestParams params = new RequestParams("http://192.168.1.16:8080/FileUpload/FileUploadServlet");
//以表單方式上傳
params.setMultipart(true);
//設置上傳文件的路徑
params.addBodyParameter("File",new File(Environment.getExternalStorageDirectory()+"/atguigu/480.mp4"),null,"oppo.mp4");
x.http().post(params, new Callback.ProgressCallback<File>() {
/**
* 當下載成功的時候回調這個方法,並且把下載到哪個路徑回傳過來
* @param file
*/
@Override
public void onSuccess(File file) {
Log.e("TAG", "onSuccess==" + file.toString());
Toast.makeText(XUtils3NetActivity.this, "onSuccess==" + file.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e("TAG", "onError==" + ex.getMessage());
}
@Override
public void onCancelled(CancelledException cex) {
Log.e("TAG", "onCancelled==" + cex.getMessage());
}
@Override
public void onFinished() {
Log.e("TAG", "onFinished==");
}
@Override
public void onWaiting() {
Log.e("TAG", "onWaiting==");
}
@Override
public void onStarted() {
Log.e("TAG", "onStarted==");
}
@Override
public void onLoading(long total, long current, boolean isDownloading) {
progressbar.setMax((int) total);
progressbar.setProgress((int) current);
Log.e("TAG", "onLoading==" + current + "/" + total + ",isDownloading==" + isDownloading);
}
});
Android項目從Eclipse增加支持Android Studio
Android項目從Eclipse增加支持Android Studio 使用Eclipse開發Android已經有些年頭了,然而Android Studio(後面簡稱
單機搭建Android開發環境(三),單機搭建android開發
單機搭建Android開發環境(三),單機搭建android開發單機搭建Android開發環境,第一篇重點介紹了如何優化Windows 7系統,以提高開發主機的性能並延長
一起來學習Android自定義控件
一起來學習Android自定義控件 概述 Android已經為我們提供了大量的View供我們使用,但是可能有時候這些組件不能滿足我們的需求,這時候就需要自定義控件了。
改變Activity啟動時的默認動畫,activity默認動畫
改變Activity啟動時的默認動畫,activity默認動畫why 在開發中我們可能需要改變這一行為,一般基於2種理由: how 筆者所知道的主要有3種方式,下面我們