android点击查看大图(长按保存图片)
来源:互联网 发布:金山软件成都招聘 编辑:程序博客网 时间:2024/05/16 16:03
通常会看到点击ImageView弹出一个Dialog上面有一张大图,然后长按大图可以保存,这就好像成为了一个固定的
流程,那么,我们就来实现这一系列的功能。
1.xml文件,特别简单,只有一个ImageView:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/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="visahall.cn.testsavebitmap.MainActivity"> <ImageView android: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) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); //小图的点击事件(弹出大图) imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.show(); } }); } private void init() { imageView = (ImageView) findViewById(R.id.image); //大图所依附的dialog dialog = new Dialog(MainActivity.this, R.style.AlertDialog_AppCompat_Light_); mImageView = getImageView(); dialog.setContentView(mImageView); //大图的点击事件(点击让他消失) mImageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); //大图的长按监听 mImageView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { //弹出的“保存图片”的Dialog AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setItems(new String[]{getResources().getString(R.string.save_picture)}, new DialogInterface.OnClickListener() { @Override public 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.jpg String newFilePath = "/sdcard/myFolder" + "/" + mName + "_cropped" + sName; file = new File(newFilePath); try { file.createNewFile(); FileOutputStream fos = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.JPEG, 50, fos); fos.flush(); fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //动态的ImageView private ImageView getImageView(){ ImageView iv = new ImageView(this); //宽高 iv.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); //设置Padding iv.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下载
0 0
- android点击查看大图(长按保存图片)
- 点击查看大图(长按保存图片)
- Android点击图片显示大图,长按保存网络图片到本地相册,单击返回。(GestureDetector)(RxJava)(Easypermissions)(AlertView)
- Android 实现WebView点击图片查看大图列表及图片保存
- Android 实现WebView点击图片查看大图列表及图片保存
- Android浏览图片,点击查看大图
- Android点击WebView中的图片查看大图
- 点击图片,查看大图
- WKWebview点击图片查看大图
- js 图片 点击查看大图
- Android长按保存图片
- Android点击缩略图查看大图
- Android 点击ImageView 查看大图
- Android dialog点击查看大图
- android 点击缩略图查看大图
- jQuery插件——imgbox(点击图片查看大图)
- 图片预览可以点击查看大图
- 弹出框PopupWindow,点击图片查看大图
- shape和selector结合
- java中字符串转换成时间格式总结
- SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法
- Idea创建一个Maven项目
- Elasticsearch-PHP基本API使用教程
- android点击查看大图(长按保存图片)
- require.js入门简介——和派孔明
- 语音动画实现
- UVa 10892 LCM Cardinality (数论+组合数学)
- 创建DDL触发器
- H5底部按钮控制图片的大小远近
- JSP无法接收到Controller返回的Model(有点小坑)
- 利用blktrace分析IO性能
- 【小波分析】小波的正交性,消失矩等常见概念及常见的小波基介绍