在AndroidManifest里添加
<uses-permission android:name="mission.INTERNET" />
<uses-permission android:name="android.android.perpermission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在AndroidManifest的 application里添加
android:usesCleartextTraffic="true"
在gradle里添加
implementation 'org.xutils:xutils:3.8.5'
在Mainactivity.java里的onCreate初始化导入xUtils,会爆红,alter+enter导入包就行
x.Ext.init(getApplication());
x.Ext.setDebug(BuildConfig.DEBUG);// 是否输出debug日志, 开启debug会影响性能.
x.view().inject(this);//没有用到view注解可以先不用
在Mainactivity.java里的onCreate使用:
不带缓存
RequestParams params = new RequestParams(URL);
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
带缓存
RequestParams params = new RequestParams(URL);
x.http().get(params, new Callback.CacheCallback<String>() {
@Override
public boolean onCache(String result) {
return false;
}
@Override
public void onSuccess(String result) {
Log.i("MainActivity", result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.i("MainActivity", ex.getMessage());
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
带参数的请求
RequestParams params = new RequestParams("https://www.baidu.com/s");
// params.setSslSocketFactory(...); // 如果需要自定义SSL
params.addQueryStringParameter("wd", "xUtils");
加载网络图片,放在Mainactivity.java里的onCreate里,并且在初始化代码后面添加
ImageOptions imageOptions;
imageOptions = new ImageOptions.Builder()
.setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120))
.setRadius(DensityUtil.dip2px(5))
// 如果ImageView的大小不是定义为wrap_content, 不要crop.
.setCrop(true) // 很多时候设置了合适的scaleType也不需要它.
// 加载中或错误图片的ScaleType
//.setPlaceholderScaleType(ImageView.ScaleType.MATRIX)
.setImageScaleType(ImageView.ScaleType.CENTER_CROP)
.setLoadingDrawableId(R.mipmap.ic_launcher)
.setFailureDrawableId(R.mipmap.ic_launcher)
.build();
x.image().bind(imageView, url, imageOptions);//一般使用到这就可以
还有其他一些使用方式
// assets file
x.image().bind(imageView, "assets://test.gif", imageOptions);
// resources file
x.image().bind(imageView, "res://" + R.minimap.test, imageOptions);
// local file
x.image().bind(imageView, new File("/sdcard/test.gif").toURI().toString(), imageOptions);
x.image().bind(imageView, "/sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:///sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:/sdcard/test.gif", imageOptions);
x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {...});
// 用来获取缓存文件
x.image().loadFile(url, imageOptions, new Callback.CommonCallback<File>() {...});
可以用它代替findViewById,减少代码的书写,更加方便,记得后面千万不要加分号
//替代onCreate方法中的 setContentView(R.layout.activity_main);
@ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
}
放在Mainactivity.java里,onCreate外面声明
@ViewInject(R.id.textView)
private TextView mTextView;
放在Mainactivity.java里,onCreate外面使用
/**
* 1. 方法必须私有限定,
* 2. 方法参数形式必须和type对应的Listener接口一致.
* 3. 注解参数value支持数组: value={id1, id2, id3}
* 4. 其它参数说明见{@link org.xutils.event.annotation.Event}类的说明.
**/
@Event(value = R.id.btn_test1,
type = View.OnClickListener.class/*可选参数, 默认是View.OnClickListener.class*/)
private void onTest1Click(View view) {
...
}
@Event(value = {R.id.button,R.id.button2},
type = View.OnClickListener.class/*可选参数, 默认是View.OnClickListener.class*/)
private void onTest1Click(View view) {
switch (view.getId()){
case R.id.button:
Log.i("MainActivity", "button1 click");
break;
case R.id.button2:
Log.i("MainActivity", "button2 click");
break;
}
}