- 博客(171)
- 收藏
- 关注
原创 Android 音视频开发——录屏直播,android开发蓝牙传数据
timeStamp = System.currentTimeMillis();}// 接下来就是 MediaCodec 常规操作,获取 Buffer 可用索引,这里不需要获取输出索引,内部已经操作了int outputBufferIndex = mediaCodec.dequeueOutputBuffer(bufferInfo,100_000);if (outputBufferIndex >=0){// 获取到了ByteBuffer byteBuffer = mediaCodec.getO
2022-02-18 13:56:15
473
原创 Android 面试总结 - LiveData,面试的时候突然遇到答不上的问题怎么办
if (existing != null) {// 若 existing 不为 null,则忽略该调用。对应方法注释的第 12 点。return;}// 将 owner 和 observer 的包装对象添加到 owner.getLifecycle()。对应方法注释的第 1 点。owner.getLifecycle().addObserver(wrapper);}第一个问题中 LiveData 怎么感知生命周期感知?我们可以回答了,调用 observe 方法时,会调用 owner.g
2022-02-18 13:54:50
1241
原创 Android 错误信息捕获发送至服务器,【工作感悟
import android.os.Looper;/*** @author 阿福 在Application中统一捕获异常,保存到文件中下次再打开时上传*/public class CrashHandler implements UncaughtExceptionHandler {/*** 是否开启日志输出,在Debug状态下开启, 在Release状态下关闭以提示程序性能* */public static final boolean DEBUG = true;/** 系统默认的Uncaug
2022-02-18 13:53:25
367
原创 Android 自定义ListView和GridView,手机软件开发app
lastUpdatedTextView.setText(“最近更新:” + new Date().toLocaleString());super.setAdapter(adapter);}}代码下载2.自定义可拖动的GridView效果预览:代码MainActivity:package com.example.draggridview;import java.util.ArrayList;import java.util.Collections;import java.util.H
2022-02-18 13:47:45
1208
原创 Android应用开发-小巫优快云博客客户端总结篇,Android开发者该学习哪些东西提高竞争力
应用宝:http://android.myapp.com/myapp/detail.htm?apkName=com.xiaowu.blogclient本篇博客作为此系列博客的总结篇,是想把自己开发这款应用中所获得的一些经验分享给大家以表感谢那么多朋友对小巫的关注和支持。很多初学者学习Android的时候总会有这种感觉,很想做点什么东西出来,但就是无从下手,也有很多人请教我说如何去学Android,如何去开发一款应用之类的问题。一般我都只是简单的回答是,从简单做起,先把基础掌握之后,然后尝试去实现自己的想
2022-02-17 19:45:31
219
原创 Android应用开发--MP3音乐播放器界面设计(1),金九银十Android热点知识
android:layout_toRightOf="@id/repeat_music"android:background="@drawable/play_selector" /><Buttonandroid:id="@+id/shuffle_music"android:layout_width=“wrap_content”android:layout_height=“wrap_content”android:layout_toRightOf="@id/play_music"and
2022-02-17 19:44:06
729
原创 Android应用坐标系统全面详解,安卓app开发软件
说到Android坐标系其实就是一个三维坐标,Z轴向上,X轴向右,Y轴向下。这三维坐标的点处理就能构成Android丰富的界面或者动画等效果,所以Android坐标系在整个Android界面中算是盖楼房的尺寸草图,下面我们就来看看这些相关的概念。2-1 Android屏幕区域划分我们先看一副图来了解一下Android屏幕的区域划分(关于这个东西的深入探讨你可以看下《Android应用setContentView与LayoutInflater加载解析机制源码分析 》一文,那儿给出了部分原理的解释),如下
2022-02-17 19:42:40
834
1
原创 Android屏幕旋转,最新Android面试题整理
portrait竖屏ActivityInfo.SCREEN_ORIENTATION_PORTRAIT //屏幕垂直方向ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT //屏幕垂直反方向ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT //根据传感器确定垂直方向ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT //根据用户确定传感器垂直方向landscape横屏
2022-02-17 19:41:16
477
原创 Android基础到进阶UI祖父级 ViewGroup介绍+实用,kotlin缺点
childWidth += params.leftMargin + params.rightMargin;childHeight += params.topMargin + params.bottomMargin;}//如果加入当前child,则超出最大宽度,则的到目前最大宽度给width,类加height 然后开启新行if (lineWidth + childWidth > sizeWidth - getPaddingLeft() - getPaddingRight()) {width =
2022-02-17 19:38:26
125
原创 android图片加载库Glide4使用教程(项目中如何快速将Glide3替换成Glide4)
Glide.with(this).load(“https://unsplash.it/200/200?random&22”).preload();预加载后显示Glide.with(this.getApplicationContext()).load(“https://unsplash.it/200/200?random&22”).into(mImage);submit()方法:类似Glide3中的downloadOnlynew Thread(new Runnable()
2022-02-17 19:37:01
570
原创 Android判断Activity是否在AndroidManifest,Alibaba高并发业务实战文档
…return startActivity(r, sourceRecord, voiceSession, voiceInteractor, startFlags, true /* doResume */, checkedOptions, inTask, outActivity);}但是 intent.getComponent(),aInfo又是从哪儿获取的呢,我们回溯到startActivityMayWait.看下上面的aInfo哪来的.ActivityInfo resolveActivity(
2022-02-17 19:35:35
862
原创 Android初识贝塞尔曲线,移动开发前景
/**ClassName: selfBeiSaiEr Description: date: 2021/7/16 14:30@author yiqi@QQ 1820762465*/public class selfBeiSaiEr extends View {private int centerY;private int startX;private int endX;private int eventX;private int eventY;private
2022-02-17 19:34:11
143
原创 Android刘海屏、水滴屏全面屏适配详解,android开发实战湖南师范大学出版社
android:resizeableActivity=[“true” | “false”]如果该属性设置为 true,Activity 将能以分屏和自由形状模式启动。 如果此属性设置为 false,Activity 将不支持多窗口模式。 如果该值为 false,且用户尝试在多窗口模式下启动 Activity,该 Activity 将全屏显示。适配方式2即为设置屏幕的最大长宽比,这是官方提供的设置方式。如果设置了最大长宽比,必须android:resizeableActivity=“
2022-02-17 19:32:46
1520
原创 Android彻底组件化—如何使用Arouter,十年Android编程开发生涯
Android彻底组件化—如何使用Arouter上篇文章讲到,AndroidComponent已经进行了UI跳转的升级改造,可以支持路由的自动注册和路由表的自动生成。但是很多使用组件化方案的同学都表示项目中已经接入ARouter来进行UI跳转,迁移成本比较高。因此我就专门写了这篇文章,讲解一下如何在组件中使用ARouter。不论用DDComponent自带的方案还是ARouter,要做到组件之间自由并且可控的跳转,需要做到下面几点:1、路由跳转需要支持传递基本类型和自定义类型(例如Object) .
2022-02-16 15:06:43
1427
原创 Android开源计划-一周开发app,企业移动应用开发
账号绑定(同3)点赞功能评论功能收藏功能检查更新(第三方)意见反馈(第三方)关于我们全局更新日历控件/日期处理图片选择库图片上传/下载图片缓存正则表达式工具文件处理轮播bannner加密(Base64/MD5)日志处理圆形头像圆角图片带清除按钮的EditText网络检查支付功能好友列表拍照功能图片处理下拉刷新(开源库)底部加载更多图片浏览(左右..
2022-02-16 15:05:18
179
原创 Android开发规范,性能优化,醍醐灌顶
命名模式为:逻辑名称+view缩写建议:如果layout文件很复杂,建议将layout分成多个模块,每个模块定义一个moduleViewHolder,其成员变量包含所属view6.strings.xml中的id命名命名模式:activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称strings.xml中,使用activity名称注释,将文件内容区分开来7.drawable中的图片命名命名模式:activity名称_逻辑名称/common_逻辑名称7.
2022-02-16 15:01:02
182
原创 Android开发艺术探索笔记(11),kotlin枚举
代码中看出我们只需给View设置默认的宽/高(mWidht/mHeight)就行。2. ViewGroup的measure过程ViewGroup不仅要完成自身的measure还要去遍历子元素的measure方法。ViewGroup是一个抽象类,不会重写View的onMeasure,但它提供一个measureChildren的方法,这里面去对每个子View进行measure,调用measureChild方法上述方法就是取出子View的LayoutParams,然后通过getChildMeasureS.
2022-02-16 14:59:37
166
原创 Android开发工程师:都想要进大厂,那么大公司面试的方向和面试官套路你都摸透了吗
算法这个从各个大公司的招聘来看,都有这个方向的要求。并且有童鞋在去面试的过程中,真的有问算法方面的问题。这个主要考察一个人的解决问题的能力,思路能力,是否开阔,活跃。并且这种题有2种考法。第一种是用Java或者安卓代码能实现的方法去解决。第二,可以不考虑具体用代码怎么实现,而是要看你的分析问题,解决问题的能力。当然第二种的情况比较少。混合开发经验**这个是目前很火的一种安卓开发工程师的需求。Hybrid开发经验。**已经有众多Hybrid App开发成功应用,比如美团、爱奇艺、微信等知名移动应用.
2022-02-16 14:56:47
1438
原创 Android开发—基于OpenCV实现相机实时图像识别跟踪,武汉软通动力android面试
import org.opencv.core.Mat;import java.io.IOException;// Use the deprecated Camera class.@SuppressWarnings(“deprecation”)public final class CameraActivity extends AppCompatActivity implements CvCameraViewListener2 {// A tag for log output.private sta
2022-02-16 14:53:57
751
原创 android中的Filter接口简介,2021年腾讯Android高级面试题及答案
二、概述过滤器通过过滤模式来约束数据,通常由实现了Filterable接口的子类来生成。 过滤操作是通过调用 filter(CharSequence) 或者 filter(CharSequence, android.widget.Filter.FilterListener)这些异步方法来完成的。以上方法一旦被调用,过滤请求就会被递交到请求队列中等待处理,同时该操作会取消那些之前递交的但是还没有被处理的请求。三、构造函数public Filter&nbs
2022-02-15 14:57:04
243
原创 Android中少用枚举类(enum)而多用,泪目
你的函数可以接受连续的数据用于名称other…4. 不使用枚举类型的解决方案=================================================================================既然使用枚举是因为参数的类型太泛了造成的类型不安全,那么我只要将参数限定在某一个类型集合里面要将的@IntDef/@StringDef + @interface来进行限定参数build.gradle 文件中添加依赖dependencies {..
2022-02-15 14:55:39
365
原创 Android~DataBinding使用,安卓开发工程师面试题
android {compileSdkVersion 28defaultConfig {applicationId “com.example.myapplication”minSdkVersion 21targetSdkVersion 28versionCode 1versionName “1.0”testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”}buildTypes {release
2022-02-15 14:49:59
322
原创 Android面试必问:Handler、Bitmap(1),Android岗面试必问
7、使用Handler的postDealy后消息队列会有什么变化?参考回答:如果队列中只有这个消息,那么消息不会被发送,而是计算到时唤醒的时间,先将Looper阻塞,到时间就唤醒它。但如果此时要加入新消息,该消息队列的对头跟delay时间相比更长,则插入到头部,按照触发时间进行排序,队头的时间最小、队尾的时间最大。8、可以在子线程直接new一个Handler吗?怎么做?参考回答:不可以,因为在主线程中,Activity内部包含一个Looper对象,它会自动管理Looper,处理子线程中发送过来的消息。
2022-02-05 12:43:45
214
原创 Android面经:如此行情下失业数月,怎么顶住压力拿到理想offer
算法删除链表中一个节点爱奇艺三面 40min自我介绍项目有没有特别擅长的Javapublic作用?.java文件名怎么确定?外部类最多有几个?内部类最多有几个?内部类支持嵌套么?线程池怎么给新建的线程设置名字?线程池种类?注解的使用?AndroidActivity的启动模式下生命周期Activity A->B的生命周期Handler中怎么实现Looper和线程绑定?一个线程最多有几个Looper?多个Looper报的异常?消息阻塞再次唤醒是什么机
2022-02-05 12:42:20
2089
原创 Android集成常见问题,android软件开发教程
签名图片文件(yw_1222_0670.jpg)不存在,请确保签名图片文件在res/drawable目录下。在安卓环境下可能是由于资源优化签名图片文件(yw_1222_0670.jpg)被优化成了0 KB,请检查APK中的签名图片文件(res/drawable/yw_1222_0670.jpg),请参考shrinkResources解决方案。如果您未使用官方的资源优化方案,使用了AndResGuard等非Google官方的第三方压缩混淆插件。建议您参考相应插件的官方文档,检查图片名是否被混淆,或路..
2022-02-05 12:40:54
2713
原创 Android进阶知识:RxJava相关,1-3年Android开发工程师面试经验分享
public static Observable onAssembly(@NonNull Observable source) {Function<? super Observable, ? extends Observable> f = onObservableAssembly;if (f != null) {return apply(f, source);}return source;}onAssembly方法中首先是一个Hook实现,这里可以理解为一个代理。可以看到这里先判
2022-02-05 12:39:30
195
原创 Android进阶必学retrofit源码解析,最新Android面试合集
Call<List> listRepos(@Path(“user”) String user);}创建Retrofit并生成API的实现Retrofit retrofit = new Retrofit.Builder().baseUrl(“https://api.github.com/”).build();GitHubService service = retrofit.create(GitHubService.class);调用API方法,生成CallCall<List&
2022-02-05 12:38:05
142
原创 Android路由框架开发入门教程,androidkotlin教程
常见的Router使用方式是在一个Activity的类中使用注解标注@MobRouterPath({“share_activity”})public class ShareActivity extends Activity {//省略代码}此处的MobRouterPath标注了这个ShareActivity的名称是什么,之后跳转使用你定义的名称,这里推荐这个名称使用常量来做,能更好的管理名称。使用MobRouter来进行跳转MobRouter.build(“share_activity”).
2022-02-05 12:36:39
2406
原创 Android语音播报、后台播报、语音识别,android应用案例开发大全第2版
android:gravity=“center”android:text=“Speek” /><Buttonandroid:id="@+id/bt_speek_bg"android:layout_width=“fill_parent”android:layout_height=“wrap_content”android:gravity=“center”android:text=“后台Speek” /><TextViewandroid:textColor="@andr
2022-02-05 12:35:15
321
原创 Android记录25-WebView实现离线缓存阅读,2021金九银十
本篇博客要实现的是一个离线下载和离线阅读的功能,这是很多阅读类app都常见的一个功能,典型的应用就是网易新闻。什么是离线下载?其实这个概念是比较模糊,是离线之后下载呢,还是下载之后离线,但稍微有点脑子的人都知道没有网络之后怎么下载呢?所以离线下载这个功能是”在有网络的情况下,把资源下载到本地“,离线阅读就是”在没有网络或者网络不好的时候,阅读本地好缓存的文章资源“。这样就很清楚我们要的这两个具体的功能需求了。实现思路小巫这里提供两个实现思路,一个就是自己写逻辑,一个是通过WebView本身自带的缓存功
2022-02-05 12:33:49
487
原创 Android自定义可移动悬浮按钮,开发岗面试自我介绍
其中几个主要属性:| 属性 | 功能 || — | — || app:backgroundTint | 正常的背景颜色 ,这里是ColorStateList类型 || app:rippleColor | 按下时的背景颜色 || app:elevation | 正常的阴影大小 || app:pressedTranslationZ | 按下时的阴影大小 || app:layout_anchor | 设置悬浮按钮的锚点,即以哪个控件为参照设置位置 || app:layout_anchorGrav.
2022-02-04 13:31:57
320
原创 Android组件化和插件化开发,android开发工程师月薪
开发调试时不需要对整个项目进行编译,每个模块可独立编译,提高了编译速度。多人合作时可以只关注自己的业务模块,把某一业务当成单一项目来开发,可以提升开发,测试效率。可以灵活的对业务模块进行组装和拆分。避免重复造轮子,节省开发维护成本;多个团队公用同一个组件,在一定层度上确保了技术方案的统一性。总结:其实组件化更多的是适合于项目大 但是功能相对集中的一些项目。比如 一个金融类的App 里面只包含金融的功能,金融功能又会有 借贷,理财,线下交易,把这些模块抽成单独的组件。插件化开发..
2022-02-04 13:30:32
173
原创 Android程序员该如何进阶?,2021Android面经
LinkedListArrayListVector(2) SetHashSetTreeSetMap:HashMapTreeMapHashTable我们需要知道每个容器的特性,以及它们的扩容方式(这个很重要)。根据我们的数据大小、特定场景、业务逻辑来选择合适的容器。7 . Java 内存模型Java 内存模型这一块非常重要,因为它涉及到我们程序的性能,我们需要知道,内存是如何分配的,成员变量、静态变量、局部变量、对象等各自分配到哪一个区:..
2022-02-04 13:29:07
131
原创 Android程序员该如何进阶学习以预防35岁中年职场危机?
(一)架构师必备Java基础1、深入理解Java泛型2、注解深入浅出3、并发编程4、数据传输与序列化5、Java虚拟机原理6、高效IO……(二)设计思想解读开源框架1、热修复设计2、插件化框架设计3、组件化框架设计4、图片加载框架5、网络访问框架设计6、RXJava响应式编程框架设计……(三)360°全方位性能调优1、设计思想与代码质量优化2、程序性能优化启动速度与执行效率优化布局检测与优化内存优化耗电优化网络传输与数据储存优化AP
2022-02-04 13:27:42
6375
原创 Android程序员的一些面试建议,android面试基础
在上面的四条中,其中第3条是最为重要的,即技术,在百度技术是大家所推崇的,因此技术是决定能否通过面试的最重要最直接的原因。一般来说,越是大公司,其对技术的要求就越高,尽管部分岗位并不需要那么好的技术,但是为了对候选者做出区分,其面试过程仍然会面试一些稍微深入的话题,相信大家都有所体会。除了技术以外,良好的沟通和协作能力也是比较重要的。也许很多人觉得这个比较抽象,心里会想:”你怎么知道我有没有良好的沟通和协作能力呢“?其实这个问题并不难,面试过程就是一次沟通过程,如果不能和面试官很好地沟通,这就说明候选者的
2022-02-04 13:26:17
209
原创 Android程序员实习——工作年限的薪资情况,4年小Android的心路历程
2.activity的生命周期流程,这是最基本的,但是你得清楚到底是啥时候调用各个方法,如一个页面(A)当前正在跟用户交互,弹出一个Dialog后,A的各个回调方法的流程调用情况等。3.数据存储的方式,五大存储方式的基本使用。4.掌握网络通信中httpClient和HttpUrlConnection基本使用,任何网络框架都是从最简单的写起,所以这个必须要知道。5.熟悉json解析,JsonObject,JsonArray等等的各种使用。6.会导入第三方库。7.线程(Thread,Runnable)
2022-02-04 13:24:52
153
原创 Android知识图谱:我们到底需要学习哪些Android知识?,HR的话扎心了
Android基础 & 常用Android进阶与时俱进、热门技术编程语言计算机基础下面,我将对上面的理论知识逐一介绍。1. Android基础 & 常用针对Android基础&常用知识,我认为对于初级开发者来说,按照优先级最主要的知识点主要包括:四大组件、布局使用、多线程 & 动画;具体介绍如下:2. Android进阶针对Android进阶知识,按照优先级最主要的知识点主要包括:自定义View、性能优化,具体介绍如下:3. 与时俱进、.
2022-02-04 13:23:27
157
原创 Android的DrawText详解,flutterpageview卡顿
Paint.getTextBounds: 当你通过这个方法来获取尺寸的时候,你可以得到能够包裹文字的最小矩形,就是图中红色边框的那部分,你可以得到一个Rect对象,包含这个最小尺寸的几个值。坑其实就在这里:这里的Rect对象坐标并不是以左上角为准的,而是相对于左边中间靠下位置的一个点,就是图中的黄色五角星。而这里水平的Baseline指的是字符串对齐的一条线。既然这样,r.top就是一个负值了,r.bottom会是一个小一点的正值,r.left和r.right在图中画的都很清楚。通过r.width()和r.
2022-02-04 13:22:02
274
原创 Android的ActivityManagerService(简称AMS) 源码分析,2021阿里Android笔试总结
}final T service;try {Constructor constructor = serviceClass.getConstructor(Context.class);service = constructor.newInstance(mContext);} catch (InstantiationException ex) {throw new RuntimeException("Failed to create service " + name“: service coul
2022-02-04 13:20:37
1005
原创 Android通讯录开发之获取运营商号码段(移动、联通,微信小程序的事件处理
<TEL_UNICOM>130,131,132,155,156,185,186,145,176</TEL_UNICOM>133,153,180,181,189,1700,177写一个配置文件控制器package com.suntek.mobilemeeting.config;import java.io.InputStream;import java.util.HashMap;import javax.xml.parsers.SAXParser;import
2022-02-03 16:52:11
487
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人