作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的安卓类(class)制作一个模因生成器应用程序。我有一个 API 可以生成 100 个流行的模因,单击其中一个时,它会将您带到 EditMemeActivity,您可以在其中输入上下文本。然后,有一个 Create Meme 按钮,它将带您到 MemeActivity,您最终可以在其中保存/与 friend 分享。目前,当创建 meme 按钮被点击时,meme 图片被转换为位图,并在下一页显示正常。我希望能够将用户在图像上输入的上下文本保存为Bitmap。因为一些 meme 图像大小不同,我将它们周围的黑色背景设置为大约 400X300 像素,所以我希望能够捕获整个 ImageView 并设置输入的文本。这是我的两个 Activity 的代码:
public class EditMemeActivity extends AppCompatActivity {
@Bind(R.id.editMemeImage) ImageView mEditMemeImage;
@Bind(R.id.editUpperText) EditText mEditUpperText;
@Bind(R.id.editLowerText) EditText mEditLowerText;
@Bind(R.id.saveMeme) Button mSaveMeme;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_meme);
ButterKnife.bind(this);
Intent intent = getIntent();
String image = intent.getStringExtra("image");
final String upper = mEditUpperText.getText().toString();
final String lower = mEditLowerText.getText().toString();
final Bitmap memeBitmap = getBitmapFromURL(image);
Picasso.with(EditMemeActivity.this).load(image).into(mEditMemeImage);
mSaveMeme.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(EditMemeActivity.this, MemeActivity.class);
intent.putExtra("bitmap", memeBitmap);
intent.putExtra("upper", upper);
intent.putExtra("lower", lower);
startActivity(intent);
}
});
}
public static Bitmap getBitmapFromURL(String image) {
try {
URL url = new URL(image);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public class MemeActivity extends AppCompatActivity {
@Bind(R.id.memeImageView) ImageView mMemeImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_meme);
ButterKnife.bind(this);
Intent intent = getIntent();
String upperText = intent.getStringExtra("upper");
String lowerText = intent.getStringExtra("lower");
byte[] byteArray = getIntent().getByteArrayExtra("bitmap");
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
mMemeImageView.setImageBitmap(bitmap);
}
最佳答案
从imageView获取位图的代码
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
Bitmap 实现了 Parcelable,所以你总是可以在 Intent 中传递它:
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("key", bitmap);
在另一个 Activity 中获取位图
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("key");
关于Android:如何将 ImageView 转换为 Bitmap 并传递给另一个 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38341964/
我是一名优秀的程序员,十分优秀!