package com.cjq.picturemarkerdemo;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List;
public class ViewPagerActivity extends Activity {
private PagerAdapter mPagerAdapter;//适配器
private List imageList;
List bitmaps;
private int mPosition;
List stringTexts;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpager);
water1();
}
private void water1() {
stringTexts = new ArrayList<>();
stringTexts.add("工单号 : JS200000000000000");
stringTexts.add("工程师 : 肖宇");
stringTexts.add("经度: 6666 ,纬度:9999");
stringTexts.add("备注:");
Bitmap sourBitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.water_bg);
Bitmap sourBitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.test_water2);
ViewPager viewPager = findViewById(R.id.view_pager);
Button button = findViewById(R.id.btn_water);
Button button1 = findViewById(R.id.btn_beizhu);
bitmaps = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
bitmaps.add(sourBitmap2);
}
bitmaps.add(sourBitmap1);
bitmaps.add(sourBitmap2);
imageList = new ArrayList<>();
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mPosition = position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mPagerAdapter = new PagerAdapter() {
@Override
public int getCount() {
return bitmaps.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(imageList.get(position));
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(ViewPagerActivity.this);
imageView.setTag(position);
imageView.setImageBitmap(bitmaps.get(position));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
container.addView(imageView);
imageList.add(imageView);
return imageView;
}
@Override
public int getItemPosition(@NonNull Object object) {
View view = (View) object;
if (mPosition == (Integer) view.getTag()) {
return POSITION_NONE;
} else {
return POSITION_UNCHANGED;
}
}
};
viewPager.setAdapter(mPagerAdapter);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doWater(false);
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ViewPagerActivity.this, EditRemarks.class);
ViewPagerActivity.this.startActivityForResult(intent, 1001);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
String remark = data.getStringExtra("remark");
stringTexts.set(stringTexts.size() -1, "备注 : " + remark);
doWater(true);
doWater(false);
}
}
private void doWater(boolean isClear){
Bitmap bitmap = bitmaps.get(mPosition);
Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.test_water2);
Bitmap water = ImageUtil.drawTextToLeftBottom(ViewPagerActivity.this, bitmap, stringTexts, 12, Color.RED, 30, 30, isClear);
if (isClear) {
bitmaps.set(mPosition, bitmap1);
} else {
bitmaps.set(mPosition, water);
}
ImageView imageView = new ImageView(ViewPagerActivity.this);
imageView.setImageBitmap(bitmaps.get(mPosition));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageList.set(mPosition, imageView);
mPagerAdapter.notifyDataSetChanged();
}
}
package com.cjq.picturemarkerdemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.annotation.Nullable;
public class EditRemarks extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_remarks_activity);
initView();
}
private void initView() {
Button cancelButton = findViewById(R.id.cancel_button);
Button completeButton = findViewById(R.id.complete_button);
EditText editText = findViewById(R.id.edit_remark);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
completeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = editText.getText().toString();
Intent intent = new Intent();
intent.putExtra("remark", s);
setResult(RESULT_OK, intent);
finish();
}
});
}
}
package com.cjq.picturemarkerdemo;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
public class ImageUtil {
public static Bitmap createWaterMaskLeftBottom(
Context context, Bitmap src, Bitmap watermark,
int paddingLeft, int paddingBottom) {
return createWaterMaskBitmap(src, watermark, dp2px(context, paddingLeft),
src.getHeight() - watermark.getHeight() - dp2px(context, paddingBottom));
}
private static Bitmap createWaterMaskBitmap(Bitmap src, Bitmap watermark,
int paddingLeft, int paddingTop) {
if (src == null) {
return null;
}
int width = src.getWidth();
int height = src.getHeight();
//创建一个bitmap
Bitmap newBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
//将该图片作为画布
Canvas canvas = new Canvas(newBitmap);
//在画布 0,0坐标上开始绘制原始图片
canvas.drawBitmap(src, 0, 0, null);
//在画布上绘制水印图片
canvas.drawBitmap(watermark, paddingLeft, paddingTop, null);
// 保存
canvas.save();
// 存储
canvas.restore();
return newBitmap;
}
public static Bitmap drawTextToLeftBottom(Context context, Bitmap bitmap, List text,
int size, int color, int paddingLeft, int paddingBottom, boolean isClear) {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(color);
paint.setTextSize(dp2px(context, size));
Rect bounds = new Rect();
return drawTextToBitmap(context, bitmap, text, paint, bounds,
dp2px(context, paddingLeft),
bitmap.getHeight() - dp2px(context, paddingBottom), isClear);
}
private static Bitmap drawTextToBitmap(Context context, Bitmap bitmap,List text,
Paint paint, Rect bounds, int paddingLeft, int paddingBottom, boolean isClear) {
Config bitmapConfig = bitmap.getConfig();
paint.setDither(true); // 获取跟清晰的图像采样
paint.setFilterBitmap(true);// 过滤一些
if (bitmapConfig == null) {
bitmapConfig = Config.ARGB_8888;
}
bitmap = bitmap.copy(bitmapConfig, true);
Canvas canvas = new Canvas(bitmap);
if (isClear) {
} else {
for (int i = 0; i< text.size(); i++ ) {
paint.getTextBounds(text.get(i), 0, text.get(i).length(), bounds);
canvas.drawText(text.get(i), paddingLeft, paddingBottom - (text.size()-1 -i) * dp2px(context,20), paint);
}
}
return bitmap;
}
public static int dp2px(Context context, float dp) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
}
edit_remarks_activity
colors
#99000000
styles



