我的博客

  • Android Paint 画笔的一些偏知识

    setStrokeCap(Paint.Cap cap) 设置线头的形状放出「平头」「圆头」「方头」这种翻译我始终有点纠结:既觉得自己翻译得简洁清晰尽显机智,同时又担心用词会不会有点太过通俗,让人觉得我不够高贵冷艳?当线条的宽度是 1 像素时,这三种线头的表现是完全一致的,全是 1 个像素的点;而当线条变粗的时候,它们就会表现出不同的样子:虚线是额外加的,虚线左边是线的实际长度,虚线右边是线头。有了

    2022-11-23 michael007js 620

  • WebView 图片宽度自适应屏幕

    本文讨论的不是类似秒拍的短视频录制,而是用户选择本地一个现有视频,压缩后上传。秒拍的实现其实是自定义视频录制功能,从而控制录制时长,分辨率,码率等,生成体积很小的视频再上传。而我们则没办法控制原视频的参数,可能是一个很大的视频需要压缩处理。思路利用ffmpeg对视频转码,通过设定参数生成分辨率和码率更小的视频,实现压缩。当然,ffmpeg的功能远不止如此,这是一个很大的专题。用到的开源库:http

    2022-11-23 michael007js 119

  • Android本地视频压缩方案

    前言本文讨论的不是类似秒拍的短视频录制,而是用户选择本地一个现有视频,压缩后上传。秒拍的实现其实是自定义视频录制功能,从而控制录制时长,分辨率,码率等,生成体积很小的视频再上传。而我们则没办法控制原视频的参数,可能是一个很大的视频需要压缩处理。思路利用ffmpeg对视频转码,通过设定参数生成分辨率和码率更小的视频,实现压缩。当然,ffmpeg的功能远不止如此,这是一个很大的专题。用到的开源库:ht

    2022-11-23 michael007js 611

  • Lifecycle Activity和Fragment生命周期感知组件 LifecycleObserver

    为什么要引进 Lifecycle我们在处理Activity或者Fragment组件的生命周期相关时,不可避免会遇到这样的问题:我们在Activity的onCreate()中初始化某些成员,比如MVP架构中的Presenter,或者AudioManager、MediaPlayer等,然后在onStop中对这些成员进行对应处理,并在onDestroy中释放这些资源。这是很常见的情形,按照通常的做法,我

    2022-11-23 michael007js 489

  • 深入解析volatile关键字

    volatile关键字在Java多线程编程编程中起的作用是很大的,合理使用可以减少很多的线程安全问题。但其实可以发现使用这个关键字的开发者其实很少,包括我自己。遇到同步问题,首先想到的一定是加锁,也就是synchronize关键字,暴力锁解决一切多线程疑难杂症。但,锁的代价是很高的。线程阻塞、系统线程调度这些问题,都会造成很严重的性能影响。如果在一些合适的场景,使用volatile,既保证了线程安

    2022-11-23 michael007js 123

  • Android 获得View截屏最优方案

    Android 获得View截屏最优方案/** * 获得View的截屏 Bitmap * * @param view * @return */public static Bitmap getMagicDrawingCache(Context context,View view,boolean quick_cache) { Bitmap bitmap = (Bitmap) view.getTa

    2022-11-22 michael007js 25411

  • git push报错erro 10054解决方法

    git push报错erro 10054解决方法

    2022-11-21 michael007js 1018

  • GitHub如何配置SSH Key

    https://github.com/michael007js/xxx.gitgit@github.com:michael007js/xxx.git这两个地址展示的是同一个项目,但是这两个地址之间有什么联系呢?前者是https url 直接有效网址打开,但是用户每次通过git提交的时候都要输入用户名和密码,有没有简单的一点的办法,一次配置,永久使用呢?当然,所以有了第二种地址,也就是SSH URL

    2022-11-21 michael007js 429

首页
关于博主
我的博客
搜索