在单独的活动onClick位图上的ImageButtons之间移动图像

时间:2017-01-19 08:09:14

标签: java android bitmap imagebutton

因此1有2 ImageButtonsclothesButton1,图像以xml声明,imageButton2为空。两者都是分开的活动。 点击clothesButton1后,我想使用位图将clothesButton1中的图片移动到imageButton2。 clothesButton1之后会变成空白。

这是我在clothesButton1的Java代码:

final ImageButton clothesButton1 =(ImageButton)findViewById(R.id.clothesBtn1);

clothesButton1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            clothesButton1.buildDrawingCache();
            Bitmap bitmapclothes = clothesButton1.getDrawingCache();
            Intent intent = new Intent();
            intent.putExtra("BitmapClothes", bitmapclothes);
        }
    });

在我的第二个活动中(对于imageButton2):

 final ImageButton imageButton2 = (ImageButton)findViewById(R.id.imageButton2);
 Intent intent = getIntent();
 Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapClothes");
 imageButton2.setImageBitmap(bitmap);

然而,移动功能不起作用,我真的不知道我错在哪里。非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

我认为问题在于你没有在clothesButton1上启用绘图缓存。

clothesButton1.setDrawingCacheEnabled(true);

请参阅:https://developer.android.com/reference/android/view/View.html#getDrawingCache%28boolean%29

答案 1 :(得分:0)

错误是因为Intent。 android显式和隐式意图中有两种类型的Intent。使用Context和Class对象创建Intent时,您将创建一个显式intent。您可以使用显式意图在应用程序中启动活动。当应用程序中的某个活动想要在另一个应用程序中启动活动时,您将创建一个隐式意图。在您的情况下,它是Explicit Intent使用Intent intent = new Intent(getApplicationContext(),secondActivityName.class)。   在你的情况下

Intent intent=new Intent(getApplicationContext(),secondActivityName.class);
intent.putExtra("BitmapClothes", bitmapclothes);
startActivity(intent);

了解有关意图read this tutorial的更多信息。

答案 2 :(得分:0)

首先,getDrawingCache()返回null;其次,您调用其他活动的方式不正确! 试试这个:

clothesButton1.setDrawingCacheEnabled(true);
clothesButton1.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
                    View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
clothesButton1.layout(0, 0, clothesButton1.getMeasuredWidth(), imageButton.getMeasuredHeight());
clothesButton1.buildDrawingCache(true);
Bitmap bitmapclothes = Bitmap.createBitmap(clothesButton1.getDrawingCache());
clothesButton1.setDrawingCacheEnabled(false);
Intent intent = new Intent(NowActivity.this,SecondActivity.class);
intent.putExtra("BitmapClothes", bitmapclothes);
startActivity(intent);

参考:Android View.getDrawingCache returns null, only null

答案 3 :(得分:0)

我认为您可以使用Activity Transition轻松实现这一目标。好好看看:) Start an activity with a shared element部分可能就是您想要的。