package com.dingmouren.dingdingmap.ui.welfare; import android.app.Activity; import android.app.ActivityOptions; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.support.design.internal.NavigationMenu; import android.view.MenuItem; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; import com.dingmouren.dingdingmap.MyApplication; import com.dingmouren.dingdingmap.R; import com.dingmouren.dingdingmap.base.BaseActivity; import com.dingmouren.dingdingmap.util.NetworkUtil; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import butterknife.BindView; import io.github.yavski.fabspeeddial.FabSpeedDial; import uk.co.senab.photoview.PhotoViewAttacher; import static android.R.attr.path; /** * Created by dingzi on 2016/12/5. */ public class PictureActivity extends BaseActivity { private static final String TAG = PictureActivity.class.getName(); private static final String SAVED_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/钉钉地图"; @BindView(R.id.img_picture) ImageView img; @BindView(R.id.fab_dialog) FabSpeedDial mFabDialog; @BindView(R.id.tv_no_network) TextView mTvNetNotice; private String mImgUrl; public static Intent newInstance(Activity context, View view,String imgUrl ){ Intent intent = new Intent(context,PictureActivity.class); intent.putExtra("img_url",imgUrl); context.startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(context, view, context.getResources().getString(R.string.welfare_share_img)).toBundle()); return intent; } @Override public int setLayoutId() { return R.layout.activity_picture; } @Override public void init(Bundle savedInstanceStae) { if (getIntent() != null){ mImgUrl = getIntent().getStringExtra("img_url"); } } @Override public void initView(Bundle savedInstanceState) { Glide.with(this).load(mImgUrl).diskCacheStrategy(DiskCacheStrategy.SOURCE) .dontAnimate() .listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { supportStartPostponedEnterTransition(); return false; } }).into(img); if (!NetworkUtil.isAvailable(this)){ mTvNetNotice.setVisibility(View.VISIBLE); }else { mTvNetNotice.setVisibility(View.GONE); } new PhotoViewAttacher(img); } @Override public void initListener() { mFabDialog.setMenuListener(new FabSpeedDial.MenuListener() { @Override public boolean onPrepareMenu(NavigationMenu navigationMenu) { return true; } @Override public boolean onMenuItemSelected(MenuItem menuItem) { switch (menuItem.getItemId()){ case R.id.back: onBackPressed(); break; case R.id.img_save: saveImageToGallery(PictureActivity.this,img.getDrawingCache()); break; } return true; } @Override public void onMenuClosed() { } }); } @Override public void initData() { } public static void saveImageToGallery(Context context, Bitmap bmp) { // 首先保存图片 File appDir = new File(Environment.getExternalStorageDirectory(), "DingDingMap"); if (!appDir.exists()) { appDir.mkdir(); } String fileName = System.currentTimeMillis() + ".jpg"; File file = new File(appDir, fileName); try { FileOutputStream fos = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); Toast.makeText(MyApplication.applicationContext,"图片保存在"+appDir.getAbsolutePath(),Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 其次把文件插入到系统图库 try { MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), fileName, null); } catch (FileNotFoundException e) { e.printStackTrace(); } // 最后通知图库更新 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + appDir.getAbsolutePath()))); } @Override protected void onDestroy() { super.onDestroy(); } }