Hello World 源码:
import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.annotations.NonNull; import io.reactivex.functions.Consumer; import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; public class MainActivity extends AppCompatActivity { private ImageView mImage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mImage = (ImageView) findViewById(R.id.image); Observable.just("http://www.pptbz.com/pptpic/UploadFiles_6909/201203/2012031220134655.jpg") .map(new Function<String, Bitmap>() { // 事件变换 @Override public Bitmap apply(@NonNull String urlPath) throws Exception { URL url = new URL(urlPath); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); InputStream inputStream = urlConnection.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } }) .map(new Function<Bitmap, Bitmap>() { @Override public Bitmap apply(@NonNull Bitmap bitmap) throws Exception { bitmap = createWatermark(bitmap, "RxJava2.0"); return bitmap; } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Bitmap>() { @Override public void accept(Bitmap bitmap) throws Exception { if (bitmap == null) { return; } mImage.setImageBitmap(bitmap); } }); } private Bitmap createWatermark(Bitmap bitmap, String mark) { int w = bitmap.getWidth(); int h = bitmap.getHeight(); Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bmp); Paint p = new Paint(); // 水印颜色 p.setColor(Color.parseColor("#C5FF0000")); // 水印字体大小 p.setTextSize(50); //抗锯齿 p.setAntiAlias(true); //绘制图像 canvas.drawBitmap(bitmap, 0, 0, p); //绘制文字 canvas.drawText(mark, 0, h / 2, p); canvas.save(); canvas.restore(); return bmp; } }
依赖库配置信息:
compile 'io.reactivex.rxjava2:rxjava:2.1.7'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
运行效果: