600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > android点击查看大图(长按保存图片)

android点击查看大图(长按保存图片)

时间:2019-08-06 04:38:41

相关推荐

android点击查看大图(长按保存图片)

通常会看到点击ImageView弹出一个Dialog上面有一张大图,然后长按大图可以保存,这就好像成为了一个固定的

流程,那么,我们就来实现这一系列的功能。

1.xml文件,特别简单,只有一个ImageView:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".testsavebitmap.MainActivity"><ImageViewandroid:id="@+id/image"android:src="@mipmap/riven"android:layout_centerInParent="true"android:layout_width="100dp"android:layout_height="100dp" /></RelativeLayout>

2.MainActivity:

public class MainActivity extends AppCompatActivity {private ImageView imageView;private Dialog dialog;private ImageView mImageView;@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();//小图的点击事件(弹出大图)imageView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialog.show();}});}private void init() {imageView = (ImageView) findViewById(R.id.image);//大图所依附的dialogdialog = new Dialog(MainActivity.this, R.style.AlertDialog_AppCompat_Light_);mImageView = getImageView();dialog.setContentView(mImageView);//大图的点击事件(点击让他消失)mImageView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialog.dismiss();}});//大图的长按监听mImageView.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {//弹出的“保存图片”的DialogAlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setItems(new String[]{getResources().getString(R.string.save_picture)}, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {saveCroppedImage(((BitmapDrawable) mImageView.getDrawable()).getBitmap());}});builder.show();return true;}});}//保存图片private void saveCroppedImage(Bitmap bmp) {File file = new File("/sdcard/myFolder");if (!file.exists())file.mkdir();file = new File("/sdcard/temp.jpg".trim());String fileName = file.getName();String mName = fileName.substring(0, fileName.lastIndexOf("."));String sName = fileName.substring(fileName.lastIndexOf("."));// /sdcard/myFolder/temp_cropped.jpgString newFilePath = "/sdcard/myFolder" + "/" + mName + "_cropped" + sName;file = new File(newFilePath);try {file.createNewFile();FileOutputStream fos = new FileOutputStream(file);press(pressFormat.JPEG, 50, fos);fos.flush();fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//动态的ImageViewprivate ImageView getImageView(){ImageView iv = new ImageView(this);//宽高iv.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));//设置Paddingiv.setPadding(20,20,20,20);//imageView设置图片InputStream is = getResources().openRawResource(R.mipmap.riven);Drawable drawable = BitmapDrawable.createFromStream(is, null);iv.setImageDrawable(drawable);return iv;}}

Demo下载

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。