如何将图像从网格视图传递到 android 中的另一个 activity
how to pass the image from grid view to another activity in android
我有一个带有图像的网格视图,在图像上单击特定图像应该传递给下一个 activity.Now 如果使用单个可绘制图像,此步骤很简单,但是如何在处理图像时获得结果在网格中 view.Images 存储在客户端。
这是我的带有网格视图的 activity1 代码
public class GridActivity extends AppCompatActivity {
GridView androidGridView;
Integer[] imageIDs = {
R.drawable.alien, R.drawable.capt_spaulding, R.drawable.captain,
R.drawable.stark, R.drawable.casper, R.drawable.captainamerica,
R.drawable.spidey, R.drawable.abra, R.drawable.bulbasaur
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid);
androidGridView = (GridView) findViewById(R.id.avatar_grid);
androidGridView.setAdapter(new ImageAdapterGridView(this));
androidGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.captain);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Toast.makeText(getBaseContext(), "Grid Item " +
(position + 1) + " Selected", Toast.LENGTH_LONG).show();
Intent intent = new Intent(GridActivity.this,FinalActivity.class);
gosudo.putExtra("picture", byteArray);
startActivity(intent);
}
});
}
public class ImageAdapterGridView extends BaseAdapter {
private Context mContext;
public ImageAdapterGridView(Context c) {
mContext = c;
}
public int getCount() {
return imageIDs.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView mImageView;
if (convertView == null) {
mImageView = new ImageView(mContext);
mImageView.setLayoutParams(new GridView.LayoutParams(130, 130));
mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
mImageView.setPadding(16, 16, 16, 16);
} else {
mImageView = (ImageView) convertView;
}
mImageView.setImageResource(imageIDs[position]);
return mImageView;
}
}
}
这是显示所选图像的 finalActivity
public class FinalActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_final);
Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
//image view where the chosen image should set
ImageView image = (ImageView) findViewById(R.id.selectedimageview);
image.setImageBitmap(bmp);
}
}
我遇到过 stackquestions 之类的问题,但没有成功。
由于您正在使用资源,因此您可以传递 ID。
Intent intent = new Intent(this, FinalActivity.class);
intent.putExtra("imageId",imageId);
最后 Activity:
int imageId = getIntent().getIntExtra("imageId");
image.setImageResource(imageId);
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//get image resource based on adapter click position.
int imageRes = imageIDs[position];
//then pass it with the intent.
Intent intent = new Intent(GridActivity.this,FinalActivity.class);
intent.putExtra("IMAGE_RES", imageRes);
startActivity(intent);
}
});
//In FinalActivity.class
//retrieve the resource clicked and set to the imageView.
int imageRes = getIntent().getExtra("IMAGE_RES");
image.setImageResource(imageRes);
所以这是解决方案,
网格活动
int imageRes = imageIDs[position];
Intent intent = new Intent(GridActivity.this,FinalActivity.class);
intent.putExtra("IMAGE_RES", imageRes);
startActivity(intent);
在最后一幕
ImageView image = (ImageView) findViewById(R.id.selectedimageview);
Bundle extras = getIntent().getExtras();
int imageRes = extras.getInt("IMAGE_RES");
image.setImageResource(imageRes);
我有一个带有图像的网格视图,在图像上单击特定图像应该传递给下一个 activity.Now 如果使用单个可绘制图像,此步骤很简单,但是如何在处理图像时获得结果在网格中 view.Images 存储在客户端。 这是我的带有网格视图的 activity1 代码
public class GridActivity extends AppCompatActivity {
GridView androidGridView;
Integer[] imageIDs = {
R.drawable.alien, R.drawable.capt_spaulding, R.drawable.captain,
R.drawable.stark, R.drawable.casper, R.drawable.captainamerica,
R.drawable.spidey, R.drawable.abra, R.drawable.bulbasaur
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid);
androidGridView = (GridView) findViewById(R.id.avatar_grid);
androidGridView.setAdapter(new ImageAdapterGridView(this));
androidGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.captain);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Toast.makeText(getBaseContext(), "Grid Item " +
(position + 1) + " Selected", Toast.LENGTH_LONG).show();
Intent intent = new Intent(GridActivity.this,FinalActivity.class);
gosudo.putExtra("picture", byteArray);
startActivity(intent);
}
});
}
public class ImageAdapterGridView extends BaseAdapter {
private Context mContext;
public ImageAdapterGridView(Context c) {
mContext = c;
}
public int getCount() {
return imageIDs.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView mImageView;
if (convertView == null) {
mImageView = new ImageView(mContext);
mImageView.setLayoutParams(new GridView.LayoutParams(130, 130));
mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
mImageView.setPadding(16, 16, 16, 16);
} else {
mImageView = (ImageView) convertView;
}
mImageView.setImageResource(imageIDs[position]);
return mImageView;
}
}
}
这是显示所选图像的 finalActivity
public class FinalActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_final);
Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
//image view where the chosen image should set
ImageView image = (ImageView) findViewById(R.id.selectedimageview);
image.setImageBitmap(bmp);
}
}
我遇到过 stackquestions 之类的问题,但没有成功。
由于您正在使用资源,因此您可以传递 ID。
Intent intent = new Intent(this, FinalActivity.class);
intent.putExtra("imageId",imageId);
最后 Activity:
int imageId = getIntent().getIntExtra("imageId");
image.setImageResource(imageId);
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//get image resource based on adapter click position.
int imageRes = imageIDs[position];
//then pass it with the intent.
Intent intent = new Intent(GridActivity.this,FinalActivity.class);
intent.putExtra("IMAGE_RES", imageRes);
startActivity(intent);
}
});
//In FinalActivity.class
//retrieve the resource clicked and set to the imageView.
int imageRes = getIntent().getExtra("IMAGE_RES");
image.setImageResource(imageRes);
所以这是解决方案, 网格活动
int imageRes = imageIDs[position];
Intent intent = new Intent(GridActivity.this,FinalActivity.class);
intent.putExtra("IMAGE_RES", imageRes);
startActivity(intent);
在最后一幕
ImageView image = (ImageView) findViewById(R.id.selectedimageview);
Bundle extras = getIntent().getExtras();
int imageRes = extras.getInt("IMAGE_RES");
image.setImageResource(imageRes);