我是Android开发的新手。
我目前没有任何代码可以显示,但我需要帮助我的想法/项目的逻辑。
所以这是场景:
我有3个空的Imageview:
ImgView1
ImgView2
ImgView3
如果我想添加图像,应将图像插入ImgView3,如果我添加另一个图像,则应将其插入ImgView2,依此类推。
现在我的问题是:
当我想删除ImgView3中的图像时,ImgView2中的图像应该在ImgView3中传输。
就像这样:
Transferring the image from ImgView2 to ImgView3
ImgView1图像应转移到ImgView2:
所以最后:
还有另一种情况,我们假设所有的imageview都有图像。
如果用户在ImgView2中删除了图像,ImgView1应该将其图像传输到ImgView2。
我目前没有正确的代码,因为我正在研究它的逻辑。
答案 0 :(得分:0)
第一部分尝试这个逻辑:
onAdd(Bitmap bitmap)
{
if (ImgView3.getBitmap == null)
{
ImagView3.setImageBitmap(bitmap);
}
else
{
if(ImgView2.getBitmap == null)
{
ImagView2.setImageBitmap(bitmap);
}
else
{
if(ImgView1.getBitmap == null)
{
ImagView1.setImageBitmap(bitmap);
}
}
}
}
删除:
DeleteFirstImage()
{
ImgView3.setImageBitmap(null);
if(ImgView3.getBitmap() == null)
{
ImgView3.setImageBitmap(ImgView2.getBitmap());
ImgView2.setImageBitmap(null);
if(ImgView2.getBitmap() == null)
{
ImgView2.setImageBitmap(ImgView1.getBitmap());
ImgView1.setImageBitmap(null);
if(imagView1.getBitmap == null)
{
//Do nothing, this is OK :)
}
}
}
}
以类似的方式创建DeleteSecondImage()以及DeleteFirstImage()
答案 1 :(得分:0)
这里有一些东西让你开始(我还没有测试过,我很快就做到了)
首先,创建一个ImageViews数组:
private ImageView[] imageViews = new ImageView[]{mImageView1, mImageView2, mImageView3};
这是设定方法:
private void setBitmap(Bitmap bitmap) {
for (int i = imageViews.length - 1; i >= 0; i--) {
ImageView imageView = imageViews[i];
if (imageView.getDrawable() == null) {
imageView.setImageBitmap(bitmap);
break;
}
}
}
这是删除方法:
private void deleteBitmap(int position) {
ImageView imageViewToDelete = imageViews[position];
if (imageViewToDelete.getDrawable() == null) {
// We don't have anything here, so return
return;
}
for (int i = position; i >= 0; i--) {
ImageView imageView = imageViews[i];
imageView.setImageBitmap(null);
if (i != 0) {
ImageView previousImage = imageViews[i - 1];
if (previousImage.getDrawable() != null) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) previousImage.getDrawable()
if (bitmapDrawable != null) {
Bitmap previousBitmap = bitmapDrawable.getBitmap();
imageView.setImageBitmap(previousBitmap);
}
}
}
}
}