欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android長按imageview把圖片保存到本地的實例代碼

 更新時間:2017年12月15日 16:26:22   作者:NotesChapter  
本文通過代碼給大家介紹了Android長按imageview把圖片保存到本地的實現(xiàn)方法,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下吧

工具類

之前用

AsyncTask 

現(xiàn)在改用rxJava

public class SaveImageUtils { 
  public static void imageSave(final ImageView imageView, final int id) { 
    Observable 
        .create(new Observable.OnSubscribe<ImageView>() { 
              @Override 
              public void call(Subscriber<? super ImageView> sub) { 
                sub.onNext(imageView); 
              } 
            } 
        ).subscribeOn(Schedulers.io()) 
        .observeOn(AndroidSchedulers.mainThread()) 
        .subscribe(new MySubscriber<ImageView>() { 
          @Override 
          public void onNext(ImageView imageView) { 
            File imageFile = new File(ActivityUtils.ImagePath(), id + ".jpg"); 
            FileOutputStream outStream = null; 
            try { 
              outStream = new FileOutputStream(imageFile); 
              Bitmap image = imageView.getDrawingCache(); 
              image.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
              outStream.flush(); 
              outStream.close(); 
              Toast.makeText(UIUtils.getContext(), UIUtils.getString(R.string.save_picture_success), Toast.LENGTH_LONG).show(); 
            } catch (IOException e) { 
              e.printStackTrace(); 
              onError(e); 
            } 
          } 
          @Override 
          public void onError(Throwable e) { 
            Toast.makeText(UIUtils.getContext(), UIUtils.getString(R.string.save_picture_failed), Toast.LENGTH_LONG).show(); 
          } 
        }); 
  } 
} 

MySubscriber

public class MySubscriber<T> extends Subscriber<T> { 
  @Override 
  public void onStart() { 
    super.onStart(); 
  } 
  @Override 
  public void onCompleted() { 
  } 
  @Override 
  public void onError(Throwable e) { 
  } 
  @Override 
  public void onNext(T t) { 
  } 
} 

//不建議使用了
package com.app.mly.utils; 
import android.app.Activity; 
import android.graphics.Bitmap; 
import android.os.AsyncTask; 
import android.os.Environment; 
import android.widget.ImageView; 
import android.widget.Toast; 
import com.fengche.android.mly.R; 
import java.io.File; 
import java.io.FileOutputStream; 
/** 
 * Created by y on 2016/1/14. 
 */ 
public class SaveImageUtils extends AsyncTask<Bitmap, Void, String> { 
  Activity mActivity; 
  ImageView mImageView; 
  public SaveImageUtils(Activity activity, ImageView imageView) { 
    this.mImageView = imageView; 
    this.mActivity = activity; 
  } 
  @Override 
  protected String doInBackground(Bitmap... params) { 
    String result = mActivity.getResources().getString(R.string.save_picture_failed); 
    try { 
      String sdcard = Environment.getExternalStorageDirectory().toString(); 
      File file = new File(sdcard + "/123"); 
      if (!file.exists()) { 
        file.mkdirs(); 
      } 
      File imageFile = new File(file.getAbsolutePath(), "命名" + ".jpg"); 
      FileOutputStream outStream = null; 
      outStream = new FileOutputStream(imageFile); 
      Bitmap image = params[0]; 
      image.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
      outStream.flush(); 
      outStream.close(); 
      result = mActivity.getResources().getString(R.string.save_picture_success, file.getAbsolutePath()); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return result; 
  } 
  @Override 
  protected void onPostExecute(String result) { 
    Toast.makeText(mActivity, result, Toast.LENGTH_SHORT).show(); 
    mImageView.setDrawingCacheEnabled(false); 
  } 
} 

stirng文件下需要的幾個toast

<string name="save_picture">保存圖片</string> 
<string name="save_picture_failed">保存失敗</string> 
<string name="save_picture_success">圖片成功保存至%s目錄</string> 

代碼中引用

mScanCode.setOnLongClickListener(new View.OnLongClickListener() { 
      @Override 
      public boolean onLongClick(View v) { 
        AlertDialog.Builder builder = new AlertDialog.Builder(ShareActivity.this); 
        builder.setItems(new String[]{getResources().getString(R.string.save_picture)}, new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, int which) { 
            mScanCode.setDrawingCacheEnabled(true); 
            Bitmap imageBitmap = mScanCode.getDrawingCache(); 
            if (imageBitmap != null) { 
              new SaveImageUtils(ShareActivity.this, mScanCode).execute(imageBitmap); 
            } 
          } 
        }); 
        builder.show(); 
        return true; 
      } 
    }); 

總結(jié)

以上所述是小編給大家介紹的Android長按imageview把圖片保存到本地的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android Studio去除界面默認標題欄的方法

    Android Studio去除界面默認標題欄的方法

    這篇文章主要介紹了Android Studio去除界面默認標題欄的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2007-09-09
  • Android開發(fā)入門環(huán)境快速搭建實戰(zhàn)教程

    Android開發(fā)入門環(huán)境快速搭建實戰(zhàn)教程

    最近想重新學習下Android,學習之前開發(fā)環(huán)境的搭建是個首先要解決的問題,所以下面這篇文章主要給大家介紹了Android開發(fā)環(huán)境搭建的相關(guān)資料,文中將實現(xiàn)的步驟一步步介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • Android獲取SDcard目錄及創(chuàng)建文件夾的方法

    Android獲取SDcard目錄及創(chuàng)建文件夾的方法

    今天小編就為大家分享一篇Android獲取SDcard目錄及創(chuàng)建文件夾的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • android在異步任務(wù)中關(guān)閉Cursor的代碼方法

    android在異步任務(wù)中關(guān)閉Cursor的代碼方法

    android在異步任務(wù)中如何關(guān)閉Cursor?在我們開發(fā)應(yīng)用的時候,很多時候會遇到這種問題,下面我們就看看代碼如何實現(xiàn)
    2013-11-11
  • Android實現(xiàn)語音數(shù)據(jù)實時采集、播放

    Android實現(xiàn)語音數(shù)據(jù)實時采集、播放

    這篇文章主要介紹了android實現(xiàn)語音數(shù)據(jù)實時采集、播放的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Android Flutter基于WebSocket實現(xiàn)即時通訊功能

    Android Flutter基于WebSocket實現(xiàn)即時通訊功能

    WebSocket是一種在單個TCP連接上進行全雙工通信的協(xié)議。本文將利用Flutter WebSocket實現(xiàn)即時通訊功能,文中示例代碼講解詳細,感興趣的可以了解一下
    2022-03-03
  • Android高級組件ImageSwitcher圖像切換器使用方法詳解

    Android高級組件ImageSwitcher圖像切換器使用方法詳解

    這篇文章主要為大家詳細介紹了Android高級組件ImageSwitcher圖像切換器的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android開發(fā)實現(xiàn)橫向列表GridView橫向滾動的方法【附源碼下載】

    Android開發(fā)實現(xiàn)橫向列表GridView橫向滾動的方法【附源碼下載】

    這篇文章主要介紹了Android開發(fā)實現(xiàn)橫向列表GridView橫向滾動的方法,結(jié)合實例形式分析了Android橫向列表GridView實現(xiàn)橫向滾動的相關(guān)布局與功能實現(xiàn)技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下
    2018-01-01
  • Android動態(tài)控制狀態(tài)欄顯示和隱藏

    Android動態(tài)控制狀態(tài)欄顯示和隱藏

    這篇文章主要介紹了Android動態(tài)控制狀態(tài)欄顯示和隱藏,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android-App增量更新的使用姿勢

    Android-App增量更新的使用姿勢

    增量更新根據(jù)字面理解就是下載增加的那部分來達到更新的目獲取舊的Apk安裝包的簽名和已合并成新的Apk安裝包的簽名,對比簽名是否一致當你下載差異文件時,可以讓服務(wù)器給你返回新的Apk合并成功后文件的md5,當你合并成功后,通過校驗文件的md5值,達到校驗文件完整性。
    2016-04-04

最新評論