自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 收藏
  • 关注

原创 Android中AsyncTask的使用与源码分析,开发岗面试自我介绍

import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widge

2021-12-10 14:49:35 244

原创 android——dialog对话框总结,android设计模式

android:id="@+id/button3"android:layout_width=“match_parent”android:layout_height=“wrap_content”android:text=“单选”/><Buttonandroid:id="@+id/button4"android:layout_width=“match_parent”android:layout_height=“wrap_content”android:text=“多选”/>&

2021-12-10 14:47:22 2650

原创 Android-超好用的播放器——ijkplayer,2021最新Android笔试题目

ExoPlayer as IMediaPlayer: optional, experimentalcompile ‘tv.danmaku.ijk.media:ijkplayer-exo:0.8.1.2’}编译如果我们需要获取更多的视频格式支持(比如mkv,rmvb等),需要自己进行编译。我这里有个成品,包括一个小的demo,不想编译的同学可以自提。github地址。我是在Ubuntu下编译的。具体的方法官方的GitHub有,我总结一下,基本就是对着终端输入指令:自行在ubuntu下配置好An

2021-12-10 14:40:40 864

原创 Android-茫茫9个月求职路,终于拿满意offer,项目实践

主要是明确自己想要加入的公司,并开始做技术准备。目标公司是BAT,我需要到更大的平台和更优秀的人做更好的项目,正常来说加入BAT以后可以让自己的实力和眼界得到提升,并且有一线大厂的光环对以后都是蛮重要的。有人说去哪里都一样,去了大厂也是个螺丝钉,我想说我宁愿做航空母舰上的螺丝钉也不愿意做拖拉机上的螺丝钉。其实在求职的过程中一次又一次的失败曾经让我放弃BAT了,转而投向其他我认为有前景的公司,不过最初我真的是非常想去BAT!做梦都想去。关于技术准备,主要是包含下面几项:项目经历Java基础设计模式

2021-12-10 14:38:56 2306

原创 Android-第三方开源框架:Bugly让热修复变得如此简单,kotlin入门书籍推荐

// 构建多渠道补丁时使用// buildAllFlavorsDir = “bakPath/{bakPath}/bakPath/{baseApkDir}”}/**一般来说,我们无需对下面的参数做任何的修改对于各参数的详细介绍请参考:https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97*/tinkerPatch {…}1、overrideTinkerPatchC

2021-12-10 14:36:48 519

原创 Android-搭建简单服务端+ListView异步加载数据,android开发者模式设置

根据服务端list.xml,我们需要定义一个实体类:/07_DataAsyncLoad/src/com/wwj/domain/Contact.javapackage com.wwj.domain;/**联系人实体类@author wwj*/public class Contact {public int id;public String name;public String image;public Contact(int id, String name, Strin.

2021-12-10 14:35:23 370

原创 Android-手撸抖音“潜艇大挑战”,最简单的Android自定义ListView下拉刷新与上拉加载

开发中会涉及以下技术的使用,没有高精尖、都是大路货:相机:使用Camera2完成相机的预览和人脸识别自定义View:定义并控制障碍物和潜艇属性动画:控制障碍物和潜艇的移动及各种动效少啰嗦,先看东西!下面介绍各部分代码的实现。2、后景(Background)Bar首先定义障碍物基类Bar,主要负责是将bitmap资源绘制到指定区域。由于障碍物从屏幕右侧定时刷新时的高度随机,所以其绘制区域的x、y、w、h需要动态设置/*** 屏幕下方障碍物*/class DnBa.

2021-12-10 14:33:08 3751

原创 Android-高级-UI-进阶之路-(七)-SVG-基础使用-+-绘制中国地图

给 path 定义 name,如下所示定义一个 Animator 文件,以表示对这幅 Vector 图像做动画<?xml version="1.0" encoding="utf-8"?><objectAnimator xmlns:android=“http://schemas.android.com/apk/res/android”android:propertyName=“trimPathStart”android:valueFrom=“1”android:valu.

2021-12-09 10:55:08 689

原创 Android-高工面试真题:说说你对FPS的理解?如何检测应用的FPS

public void invalidate() {invalidate(true);}public void invalidate(boolean invalidateCache) {invalidateInternal(0, 0, mRight - mLeft, mBottom - mTop, invalidateCache, true);}void invalidateInternal(int l, int t, int r, int b, boolean invalidateCache,

2021-12-09 10:53:30 212

原创 Android-音视频学习系列-(二)-交叉编译动态库、静态库的入门学习

//2. 保存source /etc/profile//3. 测试ndk-build -v如果出现如下字样,就证明配置成功了。交叉编译在 Linux 上的环境变量配置(做一个参考,采坑之后的环境配置):export NDK_GCC_x86="/root/android/ndk/android-ndk-r17c/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-gcc"export NDK_GCC_x64="/

2021-12-09 10:51:18 1298

原创 Android-第三方开源框架:Bugly让热修复变得如此简单,原理讲解

通过“产品设置”,选择刚刚创建的产品(图中第3步),可以查看到产品对应的App ID。这个App ID很重要,先记录好,后续会用到。Demo的App ID为: 3062edb401。不要用我的,对你来说一点用处都没有,请使用你自己产品的App ID。二、添加插件依赖========项目的build.gradle:dependencies {classpath ‘com.android.tools.build:gradle:3.0.0’// tinkersupport插件(1.0.3以.

2021-12-09 10:49:07 1175

原创 Android-春招-面试经历-2019年,真服了

耗时两个月的找工作经历终于是画上句号了,几十个日日夜夜的酸甜苦辣只有裸辞的亲尝者才能体会到吧,下面想来复盘或者说总结一下这段经历。但不管怎么总结,核心还是那一句话:一定要充分的准备!!!涉及到的知识点一项都不漏的复习一遍(至于深浅程度主要看自己平时的积累了),一则能很大程度的提高自信(不需要担心被面试官问倒);二则面对问到的知识点时还可以扩展的说清楚该知识点在安卓或者Java体系中的关系和逻辑。否则后续因为复习不到位而与自己理想的公司或岗位失之交臂时你会感到些懊恼。简历准备阶段可以说面试官了解你的唯一入

2021-12-09 10:46:46 160

原创 Android-Binder机制及AIDL使用,被阿里面试官征服了

Android系统中,涉及到多进程间的通信底层都是依赖于Binder IPC机制。例如当进 程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。不仅于 此,整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信,Interprocess Communication)方案。当然也存在部分其他的IPC方式,如管道、SystemV、Socket等。那么Android为什 么不使用这些原有的技术,而是要使开发一种新的叫Binder的进程间通信机制呢

2021-12-09 10:40:45 200

原创 Android 面试总结 - viewModelScope 什么时候关闭的?,Android开发者必看避坑指南

}@MainThreadfinal void clear() {mCleared = true;if (mBagOfTags != null) {synchronized (mBagOfTags) {for (Object value : mBagOfTags.values()) {// see comment for the similar call in setTagIfAbsentcloseWithRuntimeException(value);}}}onCleared();

2021-12-09 10:37:05 378

原创 Android 关于佳博和汉印蓝牙热敏打印机开发,android面试必看书籍

PrinterHelper.SetBold(“1”);PrinterHelper.SetMag(“2”, “2”);PrinterHelper.Text(PrinterHelper.TEXT, “8”, “0”, “10”, “30”, “啦啦啦”)PrinterHelper.SetMag(“1”, “1”);PrinterHelper.SetBold(“0”);PrinterHelper.InverseLine(“0”, “0”, “700”, “0”, “100”);PrinterHelpe

2021-12-08 14:27:46 411

原创 Android 六大布局,这么香的技术还不快点学起来

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”android:layout_width=“match_parent”android:layout_height=“match_parent”android:orientation=“vertical”><LinearLayoutandroid:id

2021-12-08 14:26:08 492

原创 android 使用MMKV代替SharePreference,【金九银十

/**基础数据存储*/private void iniDefault() {/**单进程:MMKV.SINGLE_PROCESS_MODE多进程:MMKV.MULTI_PROCESS_MODE*/// mKv = MMKV.defaultMMKV(MMKV.SINGLE_PROCESS_MODE, “123456”);// 不同业务需要区别存储,单独创建自己的实例// mKv = MMKV.mmkvWithID(“MyID”);// MMKV 支持自定义某个文件的目录

2021-12-08 14:23:56 255

原创 Android 仿钉钉、微信 群聊组合头像,大厂面试题汇总

效果预览| | | |   || — | — | — | — || | | | || | | | |功能生成类似钉钉、微信 群聊组合头像 Bitmap可使用图片资源 id、bitmap 或者使用 url 从网络加载,传入对应数组即可网络加载时支持线程池支持磁盘缓存、内存缓存。(记得申请磁盘缓存需要的文件存储权限)对图片资源进行采样率压缩支持子图像的点击事件…基本用法Step 1. 添加 JitPack 仓库&nbsp

2021-12-08 14:21:45 123

原创 Android 仿微信语音聊天,flutter项目结构

4.录音类里有两个成员:录音长度,录音路径。下面贴一下代码:自定义Buttonpackage com.zms.wechatrecorder.view;import com.zms.wechatrecorder.MyAudioManager;import com.zms.wechatrecorder.MyAudioManager.AudioStateChangeListener;import com.zms.wechatrecorder.R;import android.content.Cont

2021-12-08 14:19:24 464

原创 Android 从零开始实现RecyclerView分组及粘性头部效果,《Android面试题及解析》分享给大家

groupList.add(groupItem);}@Overridepublic void buildGroupView(View groupView, GroupItem groupItem) {//构建groupView,通过groupView.findViewById找到内部控件(暂不支持点击事件等),例如TextView textName = (TextView) groupView.findViewById(R.id.text_name);textName.setText(group

2021-12-08 14:17:13 605

原创 Android WindowManager窗口类型,2021国内知名大厂Android岗面经

ZMS:OptionMenu、ContextMenu的默认类型*/public static final int TYPE_APPLICATION_ATTACHED_DIALOG = FIRST_SUB_WINDOW+3;/**Window type: window for showing overlays on top of media windows.These windows are displayed between TYPE_APPLICATION_MEDIA and the.

2021-12-08 14:13:23 488

原创 Android UI-SlidingMenu侧滑菜单效果,androidapp开发工具

/**@date 2014/11/14@author wuwenjie《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享@description 主界面*/public class MainActivity extends SlidingFragmentActivity implementsOnClickListener {private ImageV

2021-12-08 14:11:57 114

原创 Android Studio自定义activity模板,Android内存泄漏总结

2.打开globals.xml.flt<?xml version="1.0"?><#include “…/common/common_globals.xml.ftl” />globals存储的是一些全局变量3.recipe.xml.ftl<?xml version="1.0"?><#import “root://activities/common/kotlin_macros.ftl” as kt><#include “.

2021-12-08 14:09:43 88

原创 Android 每周一个小轮子之 学习仿网易云广场歌单的效果,android入门开发与实战

滑动的时候,三个View跟着移动,最上面的View会到下面去,跟着的View就会轮着上来。关于这个View剖析,陈小缘大佬已经写到很仔细了。我这边就做一个整理它是用什么做的?ViewPager?显然这种样式的轮播图,很像ViewPager,又很像横向的RecyclerView,但是子View只有三个,并且对透明度、缩放、布局都有界定。所以为了更好的做出该效果,这边就用 ViewGroup来做。关于手指滑动距离和View移动距离的关系手指完整的滑完整个ViewGroup的宽 ----&..

2021-12-07 10:44:23 213

原创 Android 开发必备知识点及面试题汇总(Android+Java,Kafka是如何实现高性能的

执行相应地任务,因为线程池的大小问题,所以 AsyncTask 只应该用来执行耗时时间较短的任务,比如 HTTP 请求,大规模的下载和数据库的更改不适用于 AsyncTask,因为会导致线程池堵塞,没有线程来执行其他的任务,导致的情形是会发生 AsyncTask 根本执行不了的问题。网络相关1.TCP三次握手2.为什么TCP是可靠的,UDP早不可靠的?为什么UDP比TCP快?TCP/IP协议高,因为其拥有三次握手双向机制,这一机制保证校验了数据,保证了他的可靠性。U..

2021-12-07 10:42:45 1493

原创 Android 开发必会的7个Gradle实用技巧,flutter开发环境搭建

]]…}然后在build.gradle中配置如下:apply from config.gradle…def implementationDependencies = project.ext.dependenciesdef processors = project.ext.annotationProcessodef implementationExcludes = project.ext.implementationExcludesdependencies{// 处理所有的 xxximp

2021-12-07 10:40:33 264

原创 Android 开发之深入浅出 NavigationUI,移动跨平台开发框架

xmlns:app=“http://schemas.android.com/apk/res-auto”xmlns:tools=“http://schemas.android.com/tools”tools:context=“com.android.samples.donuttracker.MainActivity”><itemandroid:id="@+id/selectionFragment"android:orderInCategory=“100”android:title="@

2021-12-07 10:38:22 212

原创 Android 开发一定要看的15个实战项目,android嵌入式系统程序开发

SQLite数据库具有轻量、读写速度快的特点,可用于存储规范化的数据,例如通讯录,也可作为数据的本地缓存,减少网络中的重复请求,例如已拉取到客户端的微博、QQ的聊天记录等。该项目学习Android系统中的数据存储方式之一——SQLite数据库。你将学到如何在Android中调用系统API对数据库进行常见的创建和增删查改等操作。项目二:【内部存储(文件)】内部存储(文件) :对于一些体量较大的静态信息(如图片资源),可以通过文件的形式来存放。该项目探索如何在Android开发过程中,使用Java里常用

2021-12-07 10:36:01 571

原创 android 底部标签栏CommonTabLayout搭建项目底部菜单(带消息提醒)

import android.util.AttributeSet;import android.util.SparseArray;import android.util.TypedValue;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.view.animation.OvershootInterpolator;import android.wid

2021-12-07 10:33:50 176

原创 Android 实现双Launcher的无缝切换,kotlin数组的问题

//存在多个以上的Launcher的时候private void setDefaultLauncher() {// remove this activity from the package manager.PackageManager pm = getPackageManager();String examplePackageName = “com.jeejen.family”; //请修改为需要设置的 package nameString exampleActivityName = “com.

2021-12-07 10:32:06 244

原创 Android 基础:SharePreferences知识总结和在“登录,android开发教程百度云

如下://构建其他应用的上下文 Context otherAppContext = createPackageContext("com.changcheng.sharedpreferences", Context.CONTEXT_IGNORE_SECURITY); ///可以像使用自己saredPreferenf的文件一样操作 SharedPreferences sharedPreferences = otherAppContext...

2021-12-07 10:29:59 147

原创 Android-Framework学习笔记(二)Zygote进程启动过程,吊打面试官系列

//监听socket,启动新的应用进程runSelectLoop(abiList); //6closeServerSocket();} catch (MethodAndArgsCaller caller) {//通过反射调用SystemServer#main()caller.run();} catch (RuntimeException ex) {Log.e(TAG, “Zygote died with exception”, ex);closeServerSocket();throw e

2021-12-06 02:14:30 591

原创 Android 面试(五),fluttertextfield边框

既然 Handler 操作都烂熟于心,还讲这个干什么?嗯,对,在 Android 开发中,我们确实经常用到它,对于基本代码流程自然也是倒背如流,但了解它的原理的人却不是很多,所以面试官通常会考验你对 Handler 源码机制的理解,毕竟只有知己知彼,才能百战不殆嘛。我们都知道 UI 操作只能在主线程进行,通常是怎么在子线程更新 UI 的?HandlerActivity.runOnUiThread()View.post(Runnable r)讲讲 Handler 机制吧Handler 主要由

2021-12-06 02:12:52 564

原创 Android 面试总结 - Activity的启动流程,9次Android面试经验总结

// Put restore tokenintent.putExtra(AutofillManager.EXTRA_RESTORE_SESSION_TOKEN, token);intent.putExtra(AutofillManager.EXTRA_RESTORE_CROSS_ACTIVITY, true);}}if (options != null) {startActivityForResult(intent, -1, options);} else {// Note we want

2021-12-06 02:10:40 484

原创 Android 记事本功能的简单实现,成为阿里P7Android架构师到底有多难

if (itemView == null){throw new IllegalArgumentException(“item View can not be null!”);}this.itemView = itemView;itemIcon = itemView.findViewById(R.id.rand_icon);itemNoteTitle = itemView.findViewById(R.id.item_note_title);itemNoteDate = itemView.find

2021-12-06 02:08:28 700

原创 android 获取 imei号码,2021Android开发面试解答之设计模式

* 例如:the IMEI/SV(software version) for GSM phones.* Return null if the software version is not available.*/tm.getDeviceSoftwareVersion();//String/** 手机号:*&n..

2021-12-06 02:02:13 117

原创 Android 网络性能优化(4)弱网优化,android事件分发机制面试

如下图所示:httprtt(Http Round-Tip Time)又称TTFB(Time to first byte),指从客户端请求的第一个字节开始发送到接收到http header的第一个字节的时间差。即 httprtt = 接收第一个字节的时间 - 发送第一个字节的时间。如果httprtt的时间较长,则说明出现了网络延时,也可能是接入的网络质量的问题。tcprtt (tcp Round-Tip Time)tcprtt = 通过tcp通道接收到第一个字节的时间 - 发送第一个字节的时

2021-12-06 02:00:06 308

原创 Android 组件化场景下多module依赖优雅实践方案,kotlinapply函数

api project(’:B’)//或者implementation project(’:B’)我们先看一下,这样生成的library-A的pom文件<?xml version="1.0" encoding="UTF-8"?><project xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd” xmlns=“http://maven.

2021-12-06 01:58:41 361

原创 Android 技巧之巧用Range注解(IntRange,FloatRange) 和自定义Range

在这个方法中,bgAlpha 是一个float的参数,区间在0.0f - 1.0f。ps:为什么后面加f呢,这涉及到基本类型的默认类型,浮点型默认为double如果将这个方法写成一个工具类或者在BaseActivity or BaseFragment中调用,直接传俩参数就行但是,如果,我们在开发过程中一不小心,将第二个参数写成了10f,那么可导致不可预期或者Error的发生这样,Range就应运而生了加入Range后的Code:fun alpUpdate(context: Activity, @F

2021-12-06 01:56:26 447

原创 Android开发简易版强制学习程序,handler机制的原理

<TextViewandroid:id="@+id/word"android:layout_width=“wrap_content”android:layout_height=“wrap_content”android:gravity=“center”android:textSize=“15pt”android:text=“Less interests”/><TextViewandroid:id="@+id/word2"android:layout_width=“wra

2021-12-05 16:41:32 75

空空如也

空空如也

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

TA关注的人

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