细数图片上传功能用到的知识点(图片压缩篇)

裁剪篇和选取篇,结合本文食用风味更佳~ 压缩目标 在讲压缩之前先要明确我们的目标 1. 对图片进行处理,使其满足我们对图片分辨率的要求; 2. 尽可能减小图片文件的大小,来节省上传时间和用户流量; 3. 避免oom; 压缩图片相关函数 明确目标之后首先我们来编写我们可能需要用到的函数 读取图片 从file或者uri中读取bitmap的这一步,我们要对图片进行第一次的处理。生成bitmap可以使用这个方法BitmapFactory.decodeStream(),由于目标图片可能分辨率很大,如果这里不进行处理很容易造成oom。 这里我们可以利用两个方式来降低bitmap所占用的内存。 inSampleSize 利用BitmapFactory.Options中的inSampleSize属性可以减小图片的分辨率。若inSampleSize= 完整阅读

细数图片上传功能用到的知识点(图片选取&拍照篇)

我们之前讲到了上传图片裁剪的相关知识点。今天就来说一说我们被裁剪的那些图片如何获取。 先来说我们的需求。在用户触发选取图片之后让用户选择是拍照还是从图库选取。从图库选取图片,我们其实可以直接调用系统图库。但是调用系统图库存在着操作不顺畅的问题,如果系统中存在多个能够处理MediaStore.ACTION_IMAGE_CAPTURE的工具会弹窗选择框让用户选择,这样大大的降低了用户操作的连贯性。所以大多数app都是由自己来实现图库功能的。 所以这里会用到如下的知识点 弹窗让用户选择拍照还是从图库选择 调取相机,获取相机返回的图片 制作我们自己的图库 下面我就会对上面每个模块进行详尽的介绍 弹窗 这样的效果 这个东西是基于popupWindow实现的,比较简单就不多说了。 //弹窗的布局 View view 完整阅读

细数图片上传功能用到的知识点(裁剪篇)

综述 我们先来看最终效果 其中涉及到的知识点 * 蒙版的绘制 * 手势拖动,手势放大 * 图片的matrix操作 * 图片的裁剪 下面我就对这每个知识点进行详细的说明 蒙版的绘制 可以看到界面上覆盖了一层半透明的蒙版,中间扣出了一个正方形的区域,为了使边界更加明显我又绘制了一个白色的正方形的线框。 实现方式自定义View 重写ondraw方法绘图作为背景。利用PorterDuffXfermode 中的XOR模式扣掉中间的矩形区域 //矩形区域的坐标可根据你的需求定制 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR)); canvas. 完整阅读

处理Android6-0中popuoWindow的兼容性

前记 popupWindow是Android开发中很重要的一个控件。具体的使用方式我就不多提了。但是popupWindow在Android6.0之后是有些许修改的,这些修改导致我在开发中遇到了很大的坑。在此提出来,希望大家能够规避。 变更 在Android6.0之前popupwindow如果设置 popupWindow.setOutsideTouchable(true); popupWindow.setFocusable(false) 那么点击屏幕外部是不会导致popupWindow触发dismiss()事件的。而在Android6.0下则会触发。 问题 一般情况下我们使用popupWindow如下图 点击全部类型弹出搜索框,再次点击关闭搜索框。 popButton. 完整阅读

ScrollView嵌套SwipeMenuListView的一些改进

概述 这种侧滑菜单大家都不会陌生,自从qq使用了了这种方式之后,网上有很多实现方法。公司有一个业务需要这种模式,本想在github上找个现成的直接使用。于是找到了这个 https://github.com/baoyongzhang/SwipeMenuListView 问题 尽管这个项目实现了大多数功能,但是这个项目存在几个问题 当其放置于scrollView中,上下滑动和左右滑动有时候会出现冲突,导致菜单收不回来,并且时而滑动艰难 与部分下拉刷新组件会产生冲突 每次都只能拉开一个抽屉(业务需要同时打开多个) 解决问题 解决问题1、2 既然是滑动冲突, 完整阅读