Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> xUtils3,xutils3github

xUtils3,xutils3github

編輯:關於android開發

xUtils3,xutils3github


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);
	}
});

  

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved