因此1有2 ImageButtons
,clothesButton1
,图像以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);
然而,移动功能不起作用,我真的不知道我错在哪里。非常感谢任何帮助。
答案 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);
答案 3 :(得分:0)
我认为您可以使用Activity Transition轻松实现这一目标。好好看看:)
Start an activity with a shared element
部分可能就是您想要的。