我正在创建一个从网址中提取图片并将其放入recyclerview的应用程序。然后,用户可以访问这些图像并全屏查看。这是通过毕加索实现的。现在,我希望能够使用onTouchEvent或其他方式对用毕加索加载的图像进行手指绘制,但不确定如何执行。
此类将图像设置为已加载毕加索的map_edit_gallery.xml:
public class EditMapImage extends AppCompatActivity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_edit_gallery);
checkIntent();
//Find savebutton
ImageButton saveMapButton = findViewById(R.id.saveEditImagebutton);
saveMapButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(),"Saved",Toast.LENGTH_SHORT).show();
}
});
}
//This will check to see if the intent extras exist and if they do get the extra
private void checkIntent(){
if(getIntent().hasExtra("image_url") && getIntent().hasExtra("name_url")){
String imageUrl = getIntent().getStringExtra("image_url");
String nameUrl = getIntent().getStringExtra("name_url");
setMapImage(imageUrl, nameUrl);
}
}
private void setMapImage(String imageUrl, String nameUrl){
//Set the Text view
TextView name = findViewById(R.id.mapNameEditor);
name.setText(nameUrl);
//Set the Image
ImageView imageView = findViewById(R.id.mapEditScreen);
Picasso.get().load(imageUrl).into(imageView);
Picasso picasso = Picasso.get();
DrawToImage myTransformation = new DrawToImage();
picasso.load(imageUrl).transform(myTransformation).into(imageView);
}
}
此类允许我使用画布绘制加载的图像,但无法弄清楚如何使用触摸来绘制:
public class DrawToImage implements Transformation {
@Override
public String key() {
// TODO Auto-generated method stub
return "drawline";
}
@Override
public Bitmap transform(Bitmap bitmap) {
// TODO Auto-generated method stub
synchronized (DrawToImage.class) {
if(bitmap == null) {
return null;
}
Bitmap resultBitmap = bitmap.copy(bitmap.getConfig(), true);
bitmap.recycle();
return resultBitmap;
}
}
}
[尝试使用用户选择的图像将其设置在画布对象中,然后在画布对象本身上进行绘制,而不是图像。有很多教程可以帮助您如何在画布上绘画。此过程未与Picasso图像库建立任何联系,因此我建议您首先通过Picasso获取图像,然后将图像发送到自定义画布实现中,然后返回可以在编辑后设置为Picasso的位图/可绘制对象。关于如何从画布中导出图像以在需要时获取编辑后的图像,还有很多教程。
我希望这对您有所帮助,Panos。