StickerView -- 贴纸 view (托拽、缩放、合成保存等功能)

简介#

代码是从github的:https://github.com/wuapnjie/StickerView fork 来

StikerView --- 贴纸 view (托拽、缩放、合成保存等功能)

扩展介绍- android M 之后的权限代码处理#

Google Play Services and Runtime Permissions
android 权限的处理方式:
在android M(6.0) 开始,权限的确认需要在用户首次使用时确认(之前是安装的时候确认)。那么相应的代码逻辑也要发生改变了----- 主要就是用户同意权限怎么着,不同意怎么着 if...else 的处理方式。

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    // Check Permissions Now
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
} else {
    // permission has been granted, continue as usual
    Location myLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
}



public void onRequestPermissionsResult(int requestCode,
                                       String[] permissions,
                                       int[] grantResults) {
    if (requestCode == REQUEST_LOCATION) {
        if(grantResults.length == 1
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // We can now safely use the API we requested access to
            Location myLocation =
                    LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
        } else {
            // Permission was denied or request was cancelled
        }
    }
}

代码实现分析#

  • 主activity就是 MainActivity extends AppCompatActivity 没有什么特别,需要注意的就是上面提到的android M 之后的权限处理。

  • 实现其基本功能的就是 class StickerView extends ImageView

  • 对外借口最重要的就是 addSticker ,add的最终类是自定义的Sticker 里面都有Matrix

   public void addSticker(Sticker sticker)
   public void addSticker(Bitmap stickerBitmap)
   public void addSticker(Bitmap stickerBitmap)
  • 内部操作就是由 onTouchEvent 推动的一系列 view 的变化在操作
    • 主要的放大缩小,位移等操作都是由Matri来实现
  • 保存则是由 BitmapUtil 类提供的两个函数完成。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,466评论 25 708
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,537评论 0 17
  • 一、鸡汤 appwidget是android中小组件,我们经常说的widget其实是指的那些button、text...
    欢乐斗佛阅读 2,303评论 1 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 文芾 一个人在拍照 在水上冲洗出来往的飞鸟 一个人在画画 在夕阳下搬运体内的色彩 一个人站在湖畔 发呆 盯着湖面漂...
    徐文显阅读 150评论 0 3