- 博客(42)
- 问答 (3)
- 收藏
- 关注
原创 Android Bitmap 图片裁剪
/ 设置画布透明度为完全不透明(默认值)// 调用 drawBitmap() 函数进行剪切操作。// 创建新的画布大小为550X452位图对象。// 创建画布并将其与新的位图关联起来。// 左上角到右下角的矩形区域。// 显示或保存剪切后的图片。// 创建新的空白画布对象。// 创建原始位图对象。// 定义要剪切的区域。
2024-01-26 23:40:26
451
原创 Android activity onWindowFocus Changed的方法
工作中发现此方法在页面上弹出对话框后不再被触发,因为焦点没有发生变化mark
2022-03-07 18:55:25
2709
原创 写一篇关于git使用以及解决冲突的命令
git branch 查看所有分支git checkout branchName 切换分支名git clone -b branchName 克隆分支名git status 查看本地的修改git stash save "desc" commit提交之前执行,保存所有修改git stash pop 弹出本地修改git cherry-pick commit-id 如果修改内容已经...
2022-02-25 17:36:17
179
原创 配置protobuf格式的数据传输
根gradle依赖 classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.0'gradle中// 指定proto存放的目录,与src目录同级sourceSets { main { proto.srcDirs = [ 'protos' ] } }//编写编译任务,调用plugin编译生成java文...
2022-02-25 17:35:36
2028
转载 Android保存图片和视频到相册
//android把图片文件添加到相册public String saveImage(String name, Bitmap bmp) { File appDir = new File(Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DCIM+File.separator+"Camera"+File.separator); if (!appDir.exis...
2021-09-28 17:16:04
1090
原创 Android 点击事件发生时移出控件还会触发吗?
down事件发生在button控件,并移出button有效范围,会有标记值被激活,所以click事件不会被触发,但是move和up还是会被触发
2021-04-11 15:42:17
231
原创 Android View观察或者说监听Activity的生命周期
今天学到一个比较使用的方法,就是Android系统提供的Activity中getLifecycle()方法,如我有一个播放器View,播放器View想实现观察或者说监听使用我的Activity或者Fragment的生命周期的变化,则如下写法(context as Activity).lifecycle.addObserver(view)其中view为播放器View.以上,mark一下。...
2021-03-30 20:14:44
842
原创 Android 解决竖向滑动的RecyclerView嵌入横向滑动的recyclerview的滑动冲突
此问题只需要重写被嵌入的横向滑动的recyclerview的dispatchTouchEvent方法,使用requestDisallowInterceptTouchEvent(true)方法,阻止竖向滑动事件向上传递即可,具体代码如下:public class RecyclerView2 extends RecyclerView { private int startX; private int startY; private PagerSnapHelper pagerSnap
2021-01-28 15:23:35
1288
原创 Android Ffmpeg入门实践
Android平台上编译并使用FFmpeg播放音视频FFmpeg的编译1. 在Mac OS10.15.0上编译FFmpeg-3.4.8版本FFmpeg3.4.7版本的下载地址http://www.ffmpeg.org/download.html#build-macNDK16rd的下载地址:链接:https://pan.baidu.com/s/1ZQhyeOWf6U_UUx6usYdKcg 密码:d0xa2.准备编译FFmpeg的环境 2.1安装homebrew...
2020-12-02 13:02:41
1950
原创 Android下查看SO库被依赖的情况
Android下查看SO库被依赖的情况起因近期在处理Android下动态库依赖的问题。我知道在Mac下查看某个so都被那些so依赖了,那么Android下怎么查看呢?我们都知道Android的内核是基于Linux的,可以从AOSP中你找不到ldd这个可执行程序,ndk中也没有。这就是本文要解决的问题。查看Android下共享库的依赖性。解决方案方案一:ndk中的readelf在ndk的toolchains/arm-linux-androideabi-4.9/prebuilt/l
2020-11-06 22:14:22
4633
原创 Android 阻止fragment里面的ViewPager滑动到最后一项时,再滑动切换到fragment页面的问题
Fragment里面的ViewPager里面加载了多个图片,当左右滑动图片到最后一项时,再次滑动时触发了activity中加载多个fragment页面的viewpager的页面切换事件,现在的需求是不要触发activity中的ViewPager的页面切换事件。设置某个fragment里面的viewpager的父控件及以上的控件不拦截滑动事件即可实现。但是这个拦截的时机很重要,需要在dispatchTouchEvent方法中设置。public class BannerViewPager ext.
2020-09-05 21:00:48
533
原创 Android Shape对应的Java类GradientDrawable
Shape的xml对应着java的GradientDrawable类,例如想要对不同的角设置不同的圆角角度,使用如下:GradientDrawable gradientDrawable = new GradientDrawable();gradientDrawable.setCornerRadii(new float[]{dp2px(5),dp2px(5),0,0,dp2px(10),...
2020-04-29 16:08:31
355
原创 Mac 10.15.4下面使用Android ndk-16编译ffmpeg3.4.7
最近几天想要编译ffmpeg,就是下载了最新的版本的ffmpeg4.2,结果就是无论怎么配置都是各种错误,状况百出,后来去下载了ffmpeg3.4.7,一下子就编译成功,下面在这里记录一下:准备环境:下载ndk-16,下载ffmpeg使用brew安装如下的文件:brew install automake brew install celt brew install faac...
2020-04-15 11:41:10
605
原创 Fragment 谨慎使用relace方法,尽可能的使用add方法加载fragment
遇到这样一个问题,当使用replace加载fragment的时候,app从后台切换到前台时,直接执行了fragment的onDestroy方法,导致了整个app的崩溃。修改成了add方法后,就解决了。分析原因,可能是replace时实例化了多个fragment,导致切回前台时,执行了无用的fragment实例的onDestroy方法导致的。mark一下...
2019-08-21 16:27:59
184
原创 关于viewpager切换时闪一下的问题
当ViewPager中的每一个item是RecyclerView时,且每个RecyclerView中有大量的数据时,那么切换时看到的效果就会闪动一下,虽然不是什么大问题,毕竟影响用户体验。默认设置setCurrentItem方法时,是默认平滑的切换,但是此时正是因为这个平滑的切换导致的闪动,正确的设置是viewPager.setCurrentItem(3,false);工作中遇...
2019-08-19 19:50:42
3521
1
原创 加入购物车动画实现
/** * * @param itemView * @param targetView */ public void animationItem(ImageView itemView, View targetView) { // 一,将imageview加入到根view中 final ImageView image...
2019-08-16 18:58:25
215
原创 RecyclerView中的notifyItemInserted和notifyItemRemoved方法的使用
使用notifyItemInserted方法向末尾处添加item的时候,要使用如下的方式notifyItemInserted(getItemCount());其中getItemCount()才能正确的计算出插入的位置,然后在调用notifyItemChanged(getItemCount());方法更新一下即可如果使用list.size()-1计算插入位置的话,一个一个的插...
2019-08-15 17:16:16
13743
原创 Android fragment中的onHiddenChange()方法
在切换fragment时,如果需要每次展现时实时刷新数据,则可在此方法里面操作,因为在add()或者hide()时,fragment中的生命周期的函数并不会被调用(非第一次),所以需要在这个方法里面支持刷新数据。@Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hi...
2019-07-15 14:50:46
2188
原创 高版本手机获取anr日志文件命令
adb bugreport 在macpro下,默认把zip文件放到home目录下面,mark一下,防止忘记
2019-07-05 16:18:16
2500
1
原创 一个整体的解决权限授予的方案
很久没有写博客了,近来工作中解决targetSDKVersion从19升级到23的问题,有人说怎么还那么低,没办法很长时间的项目啦。升级后最突出的问题就是权限问题了,23以前是在安装之前提示全部权限一次性给予,23之后是要在运行时询问获取,因此会给开发带来很多麻烦,尤其是老项目就更麻烦。 本方案是基于EasyPermission这个三方的权限框架而做的,而且下载的是源...
2018-12-14 19:20:09
224
原创 Android 配置多个FileProvider的方法以及使用
目前安卓升级到8.0之后,很多权限都控制了起来,尤其是调用相机,或者是调用第三方app查看sdcard上的文档都需要配置FileProvider才能正常访问。如果你使用了第三方的调用相机的SDK,且配置了默认了FileProvider,那么你在你的主工程里再次配置则会编译失败,下面说一下这个方法:首先自定义provider,继承FileProvider就可以,什么都不需要。其次是manif...
2018-07-18 11:58:25
9898
原创 Android Studio 混淆jar包
在android studio先面创建一个library的module,将要打成jar包的代码写好后就要开始打jar包了,分为两步操作,第一步打出没有混淆的jar。在library的gradle中,与android标签外配置如下://生成jar的命令是Gradle-other-makeJartask makeJar(type: Jar, dependsOn: ['compileReleaseJa...
2018-07-09 11:32:40
1007
原创 nable to resolve host
因为少了android.permission.CHANGE_NETWORK_STATE这个权限,导致android8.0的手机报出了unable to resolve host no address associated with hostname错误,因此写下此篇博文,留此记忆<uses-permission android:name="android.permission.BLUETO...
2018-05-22 14:46:50
904
原创 Android8.0之后调用系统相机的配置
前一阵子将sdk升级到8.0之后,发现调用系统相机会崩溃,崩溃,崩溃,不得不上网查一查原因,结果还真是权限越来越严格啦。不得不做出修改。修改如下:1.首先需要在manifest.xml中配置provider:provider android:authorities="包名.fileprovider" android:name="android.support.v4.c
2018-01-09 17:35:37
14445
1
原创 Android 图片压缩的一些小技巧,以及bitmap和byte[]之间的转换
对于获取到的图片进行压缩然后上传,这个事情还是很重要的而且是很实用的。public byte[] compressBitmap(Bitmap bitmap) { ByteArrayOutputStream baos = null; try { baos = new ByteArrayOutputStream(); bitmap.com
2018-01-09 17:31:29
2828
原创 Android studio3.0之后的ndk配置
1.首先在main文件夹先创建cpp文件夹,创建CMakeLists.txt和一个.cpp的文件2.在build.gradle文件中defaultConfig下面配置如下:ndk { abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a'}externalNativeBuild { cmake {
2018-01-02 15:24:38
2463
原创 Android 收集崩溃的详细信息
关于此问题,网上确实也比较多,但是我是经过看了好多文章后,总结出来的,能把非常相信的错误日志记录下来,先保存到sd卡上,然后可以通过网络上传到服务器上。崩溃的日常其实就是Thread.UncaughtExceptionHandler这个handler处理的。创建一个类,继承这个handler,需要实现uncaughtException(Thread thread, Throwable ex)方法。
2018-01-02 15:01:43
723
原创 基于对Retrofit的源码的理解,实现Retrofit调用的模式的activity之间的跳转
基于对Retrofit的源码的理解,实现Retrofit调用的模式的activity之间的跳转 动态代理设计模式,泛型的使用
2017-09-20 16:30:43
297
原创 基于Retrofit + RxJava的http请求的封装
最近retrofit + RxJava 请求方式很火啊,本人也对此做了一些封装,也算是对架构的一点实践吧,需要文件如下:‘HttpService接口 定义每个接口 HttpManager类 处理每个请求 OperResponse类 接口返回的根结构(基于json格式) BaseOperation类 每一个请求的基类Retrofit + RxJava请求方式需要这样的一个
2017-09-18 17:14:40
511
原创 自定义虚线格式的EditText输入框
好久没有写博客,是觉得没有太多的东西可写,今天分享一下,自定义edittext的输入框,效果图如下: 这个效果是一个输入11位手机号的效果图,分为两个步骤实现: 1.画出虚线,确定宽度和高度 2.控制焦点的定位。 虚线并不是一个图片,而是继承了EditText后,画出来的,具体的代码如下:public class VisitCodeEd
2017-09-18 16:16:21
1221
原创 Android-- 封装Dialog,即自定义Dialog,使其满足各种dialog的样式要求
工作中,我们免不了需要使用Dialog显示各种各样的提示页面,但是呢,有的需要透明度,有的需要取消黑暗度,或者对显示的位置和大小要求等等,不一而足,于是就产生了自己封装一个高大上的Dialog来满足工作当中需要的各种各样的需求。 其实呢,封装Dialog,最主要的地方就是在于dialog的Window的封装,通过getWindow获取到Window后,使用它可以对
2016-12-09 15:12:45
409
原创 Android 获取文字的宽度、高度
public float getFontWidth(Paint paint, String text) { return paint.measureText(text);}/** * @return 返回指定的文字高度 */public float getFontHeight(Paint paint) { FontMetrics fm = paint.getFontMe
2016-11-17 13:14:27
7354
原创 Android 解决滑动冲突的方法--ViewGroup中的requestDisallowInterceptTouchEvent(true)方法
当我们使用ScrollView和ViewFlipper或者ListView等等控件产生滑动冲突的时候,我们会觉得,怎么会有这样的设计,难道就没有更好的设计了吗?可是,当我们不得不处理这样的情况的时候,这个方法绝对是一个利器。 在ViewGroup的源码中并没有对这个方法有具体的使用,导致我之前根本不知道这个方法是该怎么使用的,其实这个方法的作用,当触摸到该ViewGrou
2016-11-17 11:35:48
1154
原创 自定义步骤View--StepView
最近遇到一个按步骤走流程的需求,相信其他的程序员也会遇到这样的需求吧,好了下面说一下我解决这个问题的过程刚接到这个需求的时候,我是使用布局的方式画的,很长很乱,适配是发现,那是相当的烂啊,根本无法满足适配的需要,无语啊。代码就不贴了哈。还是转换思路,自己写吧,于是就简单的写一个。代码如下:思路如下: 先写出7个方法,每个方法实现的是每个步骤的状态,画出圆点、连线
2016-11-14 15:32:44
531
原创 自定义View,一个小圆绕着一个大圆动
这个特效的难点在于如何确定小圆的圆心点,因为小圆绕着一个固定的大圆在转。其实这个是有公式额,公式如下:int x = 0 + (int) (radius * Math.cos(angle * Math.PI / 180));int y = 0 + (int) (radius * Math.sin(angle * Math.PI / 180));话不多说,上代码:
2016-11-04 17:51:03
1462
原创 Anroid TextureView、SurfaceView的Camera预览实现
其实TextureView是在Android4.0以后才有的,为了弥补SurfaceView的不足,即不能够融入到整个UI中,也不能设置一些属性,如设置透明度等等,废话不多说,上代码:TextureView实现Camera的预览package com.creditease.runningman;import android.app.Activity;import andr
2016-11-03 17:33:04
1423
原创 Android Handler MessageQueue Loop Message之间的关系以及消息发送响应流程
Handler MessageQueue Loop Message之间的关系
2016-11-02 18:25:15
812
空空如也
我的疑惑
2010-01-07
java 过滤器中使用request.getParameter()接收的是哪来的参数?
2009-07-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人