自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android基于libwebrtc.aar/jar 打包出现问题

集成webrtc出现打包编译问题

2022-09-30 09:22:31 796 1

原创 uniApp集成aar

uniapp集成aar

2022-08-29 18:37:35 3759 1

原创 webrtc USB摄像头

android webrtc 处理usb摄像头适配 VideoFrame数据处理

2022-08-17 17:46:01 915

原创 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 103

原创 Gradle 配置多渠道打包,替换桌面icon, app_name , 不同apk替换不同资源文件

Gradle 配置多渠道打包,替换桌面icon, app_name , 不同apk替换不同资源文件很久没有写博客了,因为新入职公司很忙, 每天任务很多, 根本没时间整理,最近因为公司项目需要不同版本出不同版本的apk ,很多资源文件和桌面icon name也可能需要替换,所以去研究了一下gradle 配置,打包apk 这些文件自动替换, 这样就可以方便很多了.:查找了很多资料,都或多或少有些缺少,都没达到要求,最终自己整理一下, 以后就可以查找自己的博客,方便日后工作.Manifest 中; appl

2020-08-31 11:03:14 622

翻译 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 1016

翻译 仿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 210

转载 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 7124

转载 Android加载svg图片

Android Glide4.0加载svg图片由于公司要求,需要加载网络请求的svg格式图片,所以研究了半天,百度了不少文档,也没能完成,但贼心不死,始终感觉Glide还是可以解决问题的,于是最终找到了这篇,解决了困扰我半天的问题,在这里感谢大神的文章了.实现原理Glide项目中给出了加载SVG的示例,通过自定义Module在Registry中注册新的处理对象,使用androidsvg提供...

2019-07-16 10:12:14 5171 1

翻译 Glide圆角使用

Glide加载imageView 和Glide 加载RelativeLayout1:Glide加载imageView //圆角 RoundedCorners corners = new RoundedCorners(14); RequestOptions options = RequestOptions.bitmapTransform(corner...

2019-06-11 18:49:17 286

翻译 studio问题

Studioandroid studio程序能运行,但是一直报红 本人试过,关机重庆没用,原因是build缓存问题.1:打开AS之后点击File找到下面的Invalidate Caches/Restart2:点击Invalidate Caches/Restart会弹出来一个选择3:在弹出的对话框中点击Invalidate and Restart就可以了,它会自动清空缓冲之后重启AS。...

2019-06-10 14:57:27 79

原创 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 197

原创 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 370

转载 Android 组件化开发插件化开发

在编码架构上有:mvcmvpmvvm从项目结构上有:插件化组件化组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件合并统一成一个apk,这就是组件化开发。插件化开发和组件化开发略有不用,插件化开发时将整个app拆分成很多模块,这些模块包括一个宿主和多个插件...

2019-04-15 09:55:45 130

转载 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 1546

原创 仿ios 可滑动的ScrollView

本人在开发过程中页面效果由于使用android本身控件无法达到ios那种可拉伸的View,感到很不爽,因为ios总是可以滑动,避免再添加功能时重新布局的麻烦,所以整了一下,显示了可拉伸的view,终于可以与ios保持一致了.创建一个自定义view ,UserDefineScrollView 继承ScrollView, // 移动因子, 是一个百分比, 比如手指移动了100px, 那么View...

2019-04-10 11:58:17 293

翻译 Android 自定义view

Android中的任何一个布局、任何一个控件其实都是直接或间接继承自View的,如TextView、Button、ImageView、ListView等。每一个视图的绘制过程都必须经历三个最主要的阶段,即onMeasure()、onLayout()和onDraw()一,onMeasure()View系统的绘制流程会从ViewRoot的performTraversals()方法中开始,在其内部...

2019-04-09 14:28:13 330

转载 Android 热修复原理

Android热修复实现:是基于dex分包方案,和Android虚拟机的类加载器(ClassLodaer)实现的。当分包之后,会形成一个dex包的有序数组。当需要加载类文件时,ClassLoader会从数组中第一个dex包开始加载,直至找到该类为止。当多个包中都包含相同类文件时,会取第一个类文件作为返回热修复是通过将已修复了bug的文件打成dex包(如:patch.dex),并将该补丁包放入...

2019-04-08 15:03:41 146

翻译 android线程池

线程与进程进程是一个独立的运行环境,它可以被看作一个程序或者一个应用。线程是在进程中执行的一个路径。线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。使用线程池的原因多个线程频繁地创建销毁耗时,影响效率,占用了大量资源,缺乏统一管理.线程...

2019-04-08 14:42:46 144

翻译 排序

/* * 冒泡排序 */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 132

翻译 Android Bitmap 的加载和三级缓存

三级缓存原理:就是当 App 需要引用缓存时,首先到内存缓存中读取,读取不到再到本地缓存中读取,还获取不到就到网络异步读取,读取成功之后再保存到内存和本地缓存中。内存缓存:优先加载,加载速度快本地缓存: 次优先加载,速度一般网络缓存:加载优先级最低,消耗流量。使用时注意异步加载。Bitmap 获取decodeFile:从文件系统加载 Bitmap 对象decodeResource:从资...

2019-04-08 11:59:57 303

原创 Android 性能优化

性能优化一: App 运行流畅性,不卡顿二: 省电,省流量三:稳定,不闪退四:App包尽量小卡顿原因Android 应用启动慢,使用时经常卡顿,是非常影响用户体验的,应该尽量避免出现:1:UI的绘制, 页面嵌套复杂,刷新不合理,2:数据量大,一种是数据在主线程处理,数据量过大,导致内存溢出.引起卡顿渲染在屏幕上显示,其实要经过一系列的过程,Android 应用程序把经过测量、布...

2019-04-08 10:17:11 125

原创 Handler避免内存泄漏

handler 会对activity持有引用,activity 退出页面的时候由于handler是非静态内部类会对外部类持有,简单做法是在onDestroy中remove@Overrideprotected void onDestroy() { super.onDestroy(); mHandler.removeCallbacksAndMessages(null);}同时...

2019-04-03 17:02:08 463

原创 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 140

原创 补件动画 / 属性动画

属性动画:/** * 属性动画 * 移动:translationX ,translationY * 旋转: rotation * 缩放: scaleX , scaleY * 渐变: alpha * */ //渐变 ObjectAnimator animator =ObjectAnimator.ofFloat(nu...

2019-03-28 16:06:48 236

翻译 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

转载 Retrofit理解

Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装。网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装App应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作在服务端返回数据之后,OkHttp 将原始的结果交给 R...

2019-03-19 11:06:29 319

翻译 字符串常用操作

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 137

翻译 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 157

原创 RecycleView添加头布局底布局,点击事件,多布局

Activity:1:初始化控件@BindView(R.id.recyclerviewhead)public RecyclerView recyclerviewhead;public ArrayList&lt;String&gt; data ;public MyRecycleViewAdapter adapter;:添加数据ButterKnife.bind(this); /...

2019-03-18 10:26:21 508

原创 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 165

翻译 HashMap HashTable

HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。HashMap 线程不安全,单线程使用key value 可为空,Hashtable 线程安全,多线程使用,加synchonized,Iterater 用来遍历Set和List集合. 只可以向前遍历ListItera...

2019-03-18 09:56:07 153

翻译 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 154

翻译 AsyncTask

3个泛型,4个步骤。AsyncTask &amp;lt;Params, Progress, Result&amp;gt;(1)Params…要执行的任务的参数类型;(2)Progress,在后台执行的任务的进度;(3)Results,后台执行的任务的最后结果;当一个AsyncTask任务执行时,它会经历四个步骤:(1)onPreExecute() :在任务执行前调用,用来做一些UI的初始化工作,在UI...

2019-03-18 09:42:45 134

翻译 android WebView JS交互

调用WebView的loadUrl()方法,设置WevView要显示的网页:互联网用:webView.loadUrl("http://www.google.com"); 本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在: assets 文件中mWebview.setWebViewClient(new WebVi...

2019-03-18 09:37:13 133

翻译 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 1247

翻译 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 431

翻译 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 650

原创 沉浸式布局

我的笔记android沉浸式布局日常笔记[1] : 沉浸式布局【1】&lt;!-- Base application theme. --&gt;&lt;style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"&gt; &lt;item name="colorPrimary"&gt;@color/col

2019-03-18 08:44:28 306

MediaCodec和MediaMuxer 实现视频录制

个人笔记,实现视频录制功能,MediaCodec和MediaMuxer 实现视频录制, 相比于MediaRecoder 不需要获取相机的支持视频分辨率

2022-11-07

MediaRecoder实现录制视频

个人demo,项目中需要适配录制功能, 次demo记录本次实现功能,避免以后会遇到此类功能再重新实现

2022-11-07

Wudi_BuglyUp.rar

demo为个人测试bugly升级和热更新技术,参考了bugly的开发文档

2019-06-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除