日常笔记
文章平均质量分 68
一声紫金,一生紫金
生活不止眼前的苟且,还有诗和远方。以此博客,记录自己的生活。
展开
-
Android基于libwebrtc.aar/jar 打包出现问题
集成webrtc出现打包编译问题原创 2022-09-30 09:22:31 · 787 阅读 · 1 评论 -
wait notify简单使用
wait notifyprivate static Object LOCKChannel = new Object();//开启线程, 等待接通后再继续执行下面工作new Thread(new Runnable() { @Override public void run() { synchronized (LOCKChannel) { try {原创 2020-12-21 15:05:49 · 101 阅读 · 0 评论 -
Gradle 配置多渠道打包,替换桌面icon, app_name , 不同apk替换不同资源文件
Gradle 配置多渠道打包,替换桌面icon, app_name , 不同apk替换不同资源文件很久没有写博客了,因为新入职公司很忙, 每天任务很多, 根本没时间整理,最近因为公司项目需要不同版本出不同版本的apk ,很多资源文件和桌面icon name也可能需要替换,所以去研究了一下gradle 配置,打包apk 这些文件自动替换, 这样就可以方便很多了.:查找了很多资料,都或多或少有些缺少,都没达到要求,最终自己整理一下, 以后就可以查找自己的博客,方便日后工作.Manifest 中; appl原创 2020-08-31 11:03:14 · 612 阅读 · 0 评论 -
Android 6.0 ,7.0 ,8.0 ,9.0版本
android 6.0 :1.运行时权限2. 增加低电耗模式和应用待机模式3. 取消支持 Apache HTTP 客户端4. 移除硬件标识符访问权5. WLAN 和网络连接变更6. 相机服务变更ps: 相机权限:1.在Manifest中声明所需权限:<uses-permission android:name="android.permission.CAMERA"/>...转载 2019-04-15 09:30:41 · 1374 阅读 · 0 评论 -
A --B --C--D页面 D返回按钮到C , D通过点击事件返回B,处理方法
本人面试过程中遇到了这个问题,所以自己测试了一遍,整理了一个解决方法,方法:A 页面: startActivity(new Intent(this,B.class));B 页面: Intent intent =newIntent(.this,C.class); startActivityForResult(intent,1001); @Override protecte...原创 2019-04-16 15:40:20 · 365 阅读 · 0 评论 -
Handler避免内存泄漏
handler 会对activity持有引用,activity 退出页面的时候由于handler是非静态内部类会对外部类持有,简单做法是在onDestroy中remove@Overrideprotected void onDestroy() { super.onDestroy(); mHandler.removeCallbacksAndMessages(null);}同时...原创 2019-04-03 17:02:08 · 457 阅读 · 0 评论 -
android 图片压缩
1:根据Picasso 获取图片的宽高 Picasso.with(this).load(uri).transform(transformation).into(image_first); Transformation transformation = new Transformation() { @Override public Bitmap transform(Bitma...原创 2019-04-03 16:35:01 · 138 阅读 · 0 评论 -
Android 自定义view
Android中的任何一个布局、任何一个控件其实都是直接或间接继承自View的,如TextView、Button、ImageView、ListView等。每一个视图的绘制过程都必须经历三个最主要的阶段,即onMeasure()、onLayout()和onDraw()一,onMeasure()View系统的绘制流程会从ViewRoot的performTraversals()方法中开始,在其内部...翻译 2019-04-09 14:28:13 · 328 阅读 · 0 评论 -
Android 组件化开发插件化开发
在编码架构上有:mvcmvpmvvm从项目结构上有:插件化组件化组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件合并统一成一个apk,这就是组件化开发。插件化开发和组件化开发略有不用,插件化开发时将整个app拆分成很多模块,这些模块包括一个宿主和多个插件...转载 2019-04-15 09:55:45 · 129 阅读 · 0 评论 -
Bugly更新 与热更新
Bugly更新与热更新App build.gradle// 依赖插件脚本apply from: 'tinker-support.gradle'android{ defaultConfig{ versionCode 1 versionName "1.0" // 开启multidex multiDexEnabled t...原创 2019-06-03 11:16:05 · 195 阅读 · 0 评论 -
studio问题
Studioandroid studio程序能运行,但是一直报红 本人试过,关机重庆没用,原因是build缓存问题.1:打开AS之后点击File找到下面的Invalidate Caches/Restart2:点击Invalidate Caches/Restart会弹出来一个选择3:在弹出的对话框中点击Invalidate and Restart就可以了,它会自动清空缓冲之后重启AS。...翻译 2019-06-10 14:57:27 · 75 阅读 · 0 评论 -
Glide圆角使用
Glide加载imageView 和Glide 加载RelativeLayout1:Glide加载imageView //圆角 RoundedCorners corners = new RoundedCorners(14); RequestOptions options = RequestOptions.bitmapTransform(corner...翻译 2019-06-11 18:49:17 · 283 阅读 · 0 评论 -
Android加载svg图片
Android Glide4.0加载svg图片由于公司要求,需要加载网络请求的svg格式图片,所以研究了半天,百度了不少文档,也没能完成,但贼心不死,始终感觉Glide还是可以解决问题的,于是最终找到了这篇,解决了困扰我半天的问题,在这里感谢大神的文章了.实现原理Glide项目中给出了加载SVG的示例,通过自定义Module在Registry中注册新的处理对象,使用androidsvg提供...转载 2019-07-16 10:12:14 · 5121 阅读 · 1 评论 -
Android BaseQuickAdapter万能适配器
RecycleView万能适配器一导入implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.24'implementation 'com.android.support:recyclerview-v7:25.3.1'allprojects { repositories { ...转载 2019-09-12 17:21:16 · 7091 阅读 · 0 评论 -
仿ios侧滑
一app 下 build导入: implementation 'com.android.support:recyclerview-v7:28.0.0' //万能适配器 implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.18' //仿ios侧滑 implementatio...翻译 2019-09-16 10:41:11 · 205 阅读 · 0 评论 -
Android刷新 EasyRefreshLayout 控件
一:导入gradle implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.24' implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.github.anzaizai:EasyRefresh...翻译 2019-09-16 14:56:31 · 1013 阅读 · 0 评论 -
Android 热修复原理
Android热修复实现:是基于dex分包方案,和Android虚拟机的类加载器(ClassLodaer)实现的。当分包之后,会形成一个dex包的有序数组。当需要加载类文件时,ClassLoader会从数组中第一个dex包开始加载,直至找到该类为止。当多个包中都包含相同类文件时,会取第一个类文件作为返回热修复是通过将已修复了bug的文件打成dex包(如:patch.dex),并将该补丁包放入...转载 2019-04-08 15:03:41 · 145 阅读 · 0 评论 -
android线程池
线程与进程进程是一个独立的运行环境,它可以被看作一个程序或者一个应用。线程是在进程中执行的一个路径。线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。使用线程池的原因多个线程频繁地创建销毁耗时,影响效率,占用了大量资源,缺乏统一管理.线程...翻译 2019-04-08 14:42:46 · 142 阅读 · 0 评论 -
Http Socket TCP区别
TCP/IP :传输层建立TCP 需要经过三次握手:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK...翻译 2019-03-18 09:13:55 · 639 阅读 · 0 评论 -
ListView/RecycleView区别以及判断是否滑动到顶部和底部
ListView 优化:1:复用contentView 优化布局,(if contentView==null){}else{}2:ViewHolder(不需要每次都findViewById)(setTag getTAg)3:分页加载数据,滑动中不加载图片.ListView判断是否滑动到顶部private boolean scrollFlag = false;// 标记是否滑动priv...翻译 2019-03-18 09:21:38 · 419 阅读 · 0 评论 -
java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation字面意思就是说:只有不透明的全屏activity可以自主设置界面方向。这个问题出现在android8.0以上。原因是我们给Activity同时设置了android:screenOrientation="" 和 tr...翻译 2019-03-18 09:24:33 · 1241 阅读 · 0 评论 -
ImageLoader Picasso Glide Fresco
1:ImageLoader 使用最广,因为出来最早,可惜没人维护了2:有Picasso,简洁高效3:有说Glide,Picasso升级,可以加载Gif,在Picasso基础上扩展了很多方法4:有说Fresco,因为支持WebP,还是用了NDK来加载图片,减少JavaHeap的使用Glide和Picasso是非常完美的库,Glide 加载图片以及磁盘缓存的方式都优于Picasso ,速度快,...翻译 2019-03-18 09:45:39 · 151 阅读 · 0 评论 -
HashMap HashTable
HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。HashMap 线程不安全,单线程使用key value 可为空,Hashtable 线程安全,多线程使用,加synchonized,Iterater 用来遍历Set和List集合. 只可以向前遍历ListItera...翻译 2019-03-18 09:56:07 · 150 阅读 · 0 评论 -
Handler Looper MessageQueue Message
工作流程:Handler 将Message 发送至MessageQueue 消息队列,然后Looper从MessqgeQueue中取出消息发送给Handler,Handler在处理Message 对象和Runnable对象。主线程创建一个Looper looper.prepare()public static final void prepare() { if (sThreadL...原创 2019-03-18 10:05:37 · 161 阅读 · 0 评论 -
RecycleView添加头布局底布局,点击事件,多布局
Activity:1:初始化控件@BindView(R.id.recyclerviewhead)public RecyclerView recyclerviewhead;public ArrayList<String> data ;public MyRecycleViewAdapter adapter;:添加数据ButterKnife.bind(this); /...原创 2019-03-18 10:26:21 · 507 阅读 · 0 评论 -
RxJava
使用场景:一:Retrofit连用二:基于Rxpermissions 等类库使用,RxBinding RxBus导入compile ‘io.reactivex.rxjava2:rxjava:2.0.1’compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’Rxjava观察者模式 Observable novel=Observable.create...翻译 2019-03-19 08:34:57 · 155 阅读 · 0 评论 -
字符串常用操作
String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法。当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置;如果没有检索到字符串s,该方法返回-1String str ="We are students";int size = str.indexOf("a"); // 变量size的值是3lastIndexOf(String str...翻译 2019-03-19 09:16:53 · 129 阅读 · 0 评论 -
Retrofit理解
Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装。网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装App应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作在服务端返回数据之后,OkHttp 将原始的结果交给 R...转载 2019-03-19 11:06:29 · 315 阅读 · 0 评论 -
仿ios 可滑动的ScrollView
本人在开发过程中页面效果由于使用android本身控件无法达到ios那种可拉伸的View,感到很不爽,因为ios总是可以滑动,避免再添加功能时重新布局的麻烦,所以整了一下,显示了可拉伸的view,终于可以与ios保持一致了.创建一个自定义view ,UserDefineScrollView 继承ScrollView, // 移动因子, 是一个百分比, 比如手指移动了100px, 那么View...原创 2019-04-10 11:58:17 · 288 阅读 · 0 评论 -
Android Studio 关联svn,解绑svn
打开AndroidStudio,进入Settings设置页面。找到Version Control->点击Subversion->右边框口中勾选Use command line Client并选择svn.exe所在路径。下面还有一个Use system default Subversion configuration directory,这个是默认勾选的,用于保存svn一些配置信息。...翻译 2019-03-28 11:17:57 · 1006 阅读 · 0 评论 -
补件动画 / 属性动画
属性动画:/** * 属性动画 * 移动:translationX ,translationY * 旋转: rotation * 缩放: scaleX , scaleY * 渐变: alpha * */ //渐变 ObjectAnimator animator =ObjectAnimator.ofFloat(nu...原创 2019-03-28 16:06:48 · 235 阅读 · 0 评论 -
Android 性能优化
性能优化一: App 运行流畅性,不卡顿二: 省电,省流量三:稳定,不闪退四:App包尽量小卡顿原因Android 应用启动慢,使用时经常卡顿,是非常影响用户体验的,应该尽量避免出现:1:UI的绘制, 页面嵌套复杂,刷新不合理,2:数据量大,一种是数据在主线程处理,数据量过大,导致内存溢出.引起卡顿渲染在屏幕上显示,其实要经过一系列的过程,Android 应用程序把经过测量、布...原创 2019-04-08 10:17:11 · 124 阅读 · 0 评论 -
Android Bitmap 的加载和三级缓存
三级缓存原理:就是当 App 需要引用缓存时,首先到内存缓存中读取,读取不到再到本地缓存中读取,还获取不到就到网络异步读取,读取成功之后再保存到内存和本地缓存中。内存缓存:优先加载,加载速度快本地缓存: 次优先加载,速度一般网络缓存:加载优先级最低,消耗流量。使用时注意异步加载。Bitmap 获取decodeFile:从文件系统加载 Bitmap 对象decodeResource:从资...翻译 2019-04-08 11:59:57 · 300 阅读 · 0 评论 -
排序
/* * 冒泡排序 */public class BubbleSort { public static void main(String[] args) { int[] arr={6,3,8,2,9,1}; System.out.println("排序前数组为:"); for(int num:arr){ System.out.print(num+" "...翻译 2019-04-08 13:39:39 · 129 阅读 · 0 评论 -
沉浸式布局
我的笔记android沉浸式布局日常笔记[1] : 沉浸式布局【1】<!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/col原创 2019-03-18 08:44:28 · 305 阅读 · 0 评论