Я сделал Activity
, в котором пользователь выбирает изображение из галереи и установить это изображение в круговом ImageView
, вот моя часть кода:Android Изображение профиля
public void loadImagefromGallery(View view) {
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); //camera intent
startActivityForResult(galleryIntent, RESULT_LOAD_IMG);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK
&& null != data) {
Uri pickedImage = data.getData();
// Let's read picked image path using content resolver
String[] filePath = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(pickedImage, filePath, null, null, null);
cursor.moveToFirst();
String imagePath = cursor.getString(cursor.getColumnIndex(filePath[0]));
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
cursor.close();
Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options);
// imgView = (de.hdodenhof.circleimageview.CircleImageView) findViewById(R.id.ivprofileimg);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] byteArrayImage = baos.toByteArray();
encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT);
new saveprofileimage().execute(custid, encodedImage);
} else {
Toast.makeText(this, "You haven't picked Image",
Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG)
.show();
}
}
class saveprofileimage extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() {
pdilog = new ProgressDialog(MyProfile.this);
// pdilog.setMessage("Please Wait....");
pdilog.show();
super.onPreExecute();
}
@Override
protected Void doInBackground(String... params) {
try {
response = SaveProfileImage.getJSONfromURL(params[0] + " ", params[1]);
JSONObject _jobject = new JSONObject(response);
serverresult = _jobject.getString("Result");
profileimagee = _jobject.getString("ProfileImage");
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
pdilog.dismiss();
if (serverresult.equals("Success")) {
Picasso.with(MyProfile.this)
.load(profileimagee)
.into(imgView);
new customerprofiledetails().execute(custid);
} else {
Toast.makeText(MyProfile.this, "Image couldn't be saved", Toast.LENGTH_LONG).show();
}
super.onPostExecute(result);
}
}
Проблема в том, что, когда изображение уже есть в ImageView
, и после этого я пытаюсь обновить изображение, изображение не обновляется, но когда пользователь закрывает и открывает приложение, обновленное изображение находится в ImageView
, . Я хочу, когда я нажимаю на ImageView
и выбирает изображение, которое оно обновляет на месте всего за несколько секунд, должно быть не будет никакой необходимости, чтобы открыть приложение снова, предложить мне как можно скорее
очистить кэш из Picasso и не пытаться снова –