/RxAndroid所依赖的库/
compile ‘io.reactivex:rxandroid:1.2.1’
compile ‘io.reactivex:rxjava:1.1.6’
@OnClick(R.id.yuanxing)
public void yuanxing(){
Uri parse = Uri.parse(jtu);
RoundingParams roundingParams = RoundingParams.asCircle();
GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(getResources());
GenericDraweeHierarchy build = builder.setRoundingParams(roundingParams).build();
simg.setHierarchy(build);
simg.setImageURI(parse);
}
@OnClick(R.id.yuanjiao)
public void yuanjia(){
Uri parse2 = Uri.parse(jtu);
RoundingParams roundingParams2 = RoundingParams.fromCornersRadius(20f);
GenericDraweeHierarchyBuilder builder2 = new GenericDraweeHierarchyBuilder(getResources());
GenericDraweeHierarchy build2 = builder2.setRoundingParams(roundingParams2).build();
simg.setHierarchy(build2);
simg.setImageURI(parse2);
}
@OnClick(R.id.kuangao)
public void kuangao(){
// 图片的地址
Uri uri = Uri.parse(jtu);
//创建控件
//创建Fresco加载图片的控件对象
simpleDraweeView = new SimpleDraweeView(this); // 设置控件对象的宽高比,必须设置,参数浮点型,大于1,则宽度是高度的几倍.
simpleDraweeView.setAspectRatio(0.5f);
//图片请求
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri).build();
//加载图片的控制
AbstractDraweeController build3 = Fresco.newDraweeControllerBuilder()
.setOldController(simpleDraweeView.getController())
.setImageRequest(request)
.build();
//加载图片
simpleDraweeView.setController(build3);
ll_fresco.addView(simpleDraweeView);
}
@OnClick(R.id.dongtu)
public void dongtu(){
Uri parse4 = Uri.parse(dtu);
DraweeController draweeController = Fresco.newDraweeControllerBuilder()
.setUri(parse4)
.setAutoPlayAnimations(true)
.build();
simg.setController(draweeController);
}
@OnClick(R.id.zhijiezhi)
public void zhijiezhi(){
Class<User> userClass = User.class;
//通过这个类得到要使用的注解
ZhuJie annotation = userClass.getAnnotation(ZhuJie.class);
String name = annotation.name();
try {
//实例化这个类,她实际上是使用了没有参数的构造函数,而且他会初始化这个对象如果这个还没有初始化过。(有些静态变量在类初始化的时候要进行初始化)
User user = userClass.newInstance();
user.setName(name);
Toast.makeText(this,user.getName(),Toast.LENGTH_SHORT).show();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
@OnClick(R.id.fanshe)
public void fanshe(){
ArrayList<Integer> arl = new ArrayList<Integer>();
// 将上面定义的Arraylist 返回Arraylist的class对象
Class<? extends ArrayList> clazz = arl.getClass();
// 获取Arraylist 类里面的add方法
Method method = null;
try {
method = clazz.getMethod("add",Object.class);
// 对arl对象调用由 Method 对象表示的底层方法 ,向集合中添加字符串
method.invoke(arl, "这是一个字符串");
//method.invoke(arl, "这是两个字符串");
} catch (Exception e) {
e.printStackTrace();
}
//使用增强for来循环输出 集合中的数据
for (Object item : arl) {
Log.e("lyq",item+"");
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mBind.unbind();
}
private void RxAndroidThread() {
//注意:这里用到了SD卡,记得加一下权限
Observable.just(Environment.getExternalStorageDirectory().getAbsolutePath() + "/shuaige.jpg")
//加载的是字符串,转换为Bitmp对象
.map(new Func1<String, Bitmap>() {
@Override
public Bitmap call(String s) {
//打印线程所在名称
String Threadname = Thread.currentThread().getName();
System.out.println("Func1的call所在线程名称 : " + Threadname);
Bitmap bitmap = BitmapFactory.decodeFile(s);
return bitmap;
}
})
//该方法决定了Func1的call方法(被观察者执行逻辑)运行在哪个线程
// IO:线程名称RxIoScheduler-2(子线程,内部用到了一个线程池)
.subscribeOn(Schedulers.io())
.subscribeOn(Schedulers.io())//可以执行多次,对不同数据,在不同的线程中调用
//该方法决定了 Action1的call方法(观察者执行逻辑)运行在哪个线程 mainThread:主线程
.observeOn(AndroidSchedulers.mainThread())//只能执行一次,多次调用,以第一次为基准
.subscribe(new Action1<Bitmap>() {
@Override
public void call(Bitmap bitmap) {
//打印线程所在名称
String Threadname = Thread.currentThread().getName();
System.out.println("Action1的call所在线程名称 : " + Threadname);
ImageView.setImageBitmap(bitmap);
}
});
}
private void RxAndroidClick() {
/*
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println("我被点击了");
}
});*/
Observable.create(new MyOnSubscribe(mButton))
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Action1<View>() {
@Override
public void call(View view) {
System.out.println("我在call方法中,我被点击了,有反应了");
}
});
}
class MyOnSubscribe implements Observable.OnSubscribe<View> {
public MyOnSubscribe(View view) {
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println("我被狂点中...");
//发布通知
mSubscriber.onNext(view);
}
});
}
private Subscriber mSubscriber;
@Override
public void call(Subscriber<? super View> subscriber) {
mSubscriber = subscriber;
}
}
本文介绍了一种在Android中使用RxJava处理图像的方法,包括圆形图片、圆角图片的绘制,以及使用Fresco加载图片和GIF动图。同时,文章还展示了如何通过反射机制实现对象的实例化和属性设置,以及如何使用RxJava实现线程间的操作和数据传递。
1285

被折叠的 条评论
为什么被折叠?



