編輯:關於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 使用Eclipse開發Android已經有些年頭了,然而Android Studio(後面簡稱
單機搭建Android開發環境(三),單機搭建android開發單機搭建Android開發環境,第一篇重點介紹了如何優化Windows 7系統,以提高開發主機的性能並延長
一起來學習Android自定義控件 概述 Android已經為我們提供了大量的View供我們使用,但是可能有時候這些組件不能滿足我們的需求,這時候就需要自定義控件了。
改變Activity啟動時的默認動畫,activity默認動畫why 在開發中我們可能需要改變這一行為,一般基於2種理由: how 筆者所知道的主要有3種方式,下面我們