自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android Jetpack从入门到精通(深度好文,值得收藏,裸辞奋战25天三面美团

tools:layout="@layout/fragment_welcome"><action…/><action…/><fragmentandroid:id="@+id/register"android:name=“com.joe.jetpackdemo.ui.fragment.login.RegisterFragment”android:label=“LoginFragment”tools:layout="@layout/fragment_regi

2021-12-31 10:39:18 1838

原创 Android HorizontalScrollView 水平滑动 在listview上面动态添加图片

@Overridepublic void onClick(View v) {Uri uri = Uri.parse(href);Intent intent = new Intent(Intent.ACTION_VIEW,uri);startActivity(intent);}});}header_ll.addView(coupon_home_ad_item);}lv.addHeaderView(headerView);// 通过listview的addHeaderView方法 将hea

2021-12-31 10:38:18 1659

原创 Android Handler相关面试题你能答对多少?子线程和主线程是如何切换的?

if (msg == null) {// No message indicates that the message queue is quitting.return;}// This must be in a local variable, in case a UI event sets the logger…if (traceTag != 0 && Trace.isTagEnabled(traceTag)) {Trace.traceBegin(traceTag, msg.t

2021-12-31 10:37:20 257

原创 Android Gson使用详解,android开发入门pdf

此时为了兼顾多种格式的数据,就需要使用 SerializedName 注解 根据 SerializedName 的声明来看,SerializedName 包含两个属性值,一个是字符串,一个是字符串数组,而字符串数组含有默认值@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.FIELD, ElementType.METHOD})public @interface SerializedName {String valu

2021-12-31 10:36:22 912

原创 Android Camera2 API(1),flutter登录状态管理

0、相关文章:1、简介2、Camera2 中主要的API类2.1、CameraManager类2.2、CameraCharacteristics类2.2.1、LENS_FACING:获取摄像头方向2.2.2、SCALER_STREAM_CONFIGURATION_MAP:2.2.3、SENSOR_ORIENTATION2.2.4、FLASH_INFO_AVAILABLE2.2.5、SCALER_AVAILABLE_MAX_DIGITAL_ZOOM2.2.6、LENS_INFO_MINIM

2021-12-31 10:32:40 206

原创 Android BLE 蓝牙通信库,我在美团Android研发岗工作的那5年

@Overridepublic void onDeviceFounded(SearchResult device) {Beacon beacon = new Beacon(device.scanRecord);BluetoothLog.v(String.format(“beacon for %s\n%s”, device.getAddress(), beacon.toString()));}@Overridepublic void onSearchStopped() {}@Override

2021-12-31 10:31:28 191

原创 Android 组件化实战,秀出天际

}4. 在主 app module 中引入其他Module要注意的一点是每个组件如果是独立运行的话,那它是不能作为依赖库供app模块使用的,所以在app模块下的build.gradle文件中需要进行依赖判断if (!isApplicationModule1.toBoolean()){implementation project(’:module1’)}if (!isApplicationModule2.toBoolean()){implementation project(’:module2’

2021-12-30 12:14:54 135

原创 Android 清除缓存详细实现(显示缓存大小),kotlin语法

deleteDir(context.getExternalCacheDir());}}private static boolean deleteDir(File dir) {if (dir != null && dir.isDirectory()) {String[] children = dir.list();for (int i = 0; i < children.length; i++) {boolean success = deleteDir(new File(d

2021-12-30 12:13:59 421

原创 Android 开发三年,跳槽大厂无望,开发这么久这些问题都不会

Android扩展知识点![](https://img-blog.csdnimg.cn/img_convert/dfa5764a7a0ed58b613c4d17c24a6d65.《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享png)Android开源库源码分析2020(腾讯、阿里、百度、美团、字节跳动、京东等)Android高频面试题集锦汇总(2021.1月更.

2021-12-29 13:24:13 182

原创 Android 应用内自定义随机布局输入法,flutterplugin打包aar

android:keyLabel=“7” /><Keyandroid:codes=“56”android:keyLabel=“8” /><Keya《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享ndroid:codes=“57”android:keyLabel=“9” /><Keyandroid:codes=“60001”

2021-12-29 13:23:12 1080

原创 Android 实现搜索历史(2),Android教程

int sizeWidth = MeasureSpec.getSize(widthMeasureSpec);int modeWidth = MeasureSpec.getMode(widthMeasureSpec);int sizeHeight = MeasureSpec.getSize(heightMeasureSpec);int modeHeight = MeasureSpec.getMode(heightMeasureSpec);//如果当前ViewGroup的宽高为wrap_content的

2021-12-29 13:17:33 313

原创 Android 图像处理入门(上,androidjni开发流程

//将三种效果融合起来ColorMatrix imageMatrix = new ColorMatrix();imageMatrix.postConcat(hueMatrix);imageMatrix.postConcat(saturationMatrix);imageMatrix.postConcat(lumMatrix);paint.setColorFilter(new ColorMatrixColorFilter(imageMatrix));canvas.drawBitmap(bitmap

2021-12-29 13:16:20 244

原创 android 制作,html5移动端开发框架

现在我们在图片边缘点击左键,绘制出黑线,即图片需要被拉伸的部分。如下图,对4条黑线做了注释。如果失误多绘的部分,可按住shift键的同时点击鼠标左键擦除)。如图所见,三种拉伸结果均已完美显示,已实现我们想要的拉伸效果,假设这是一个有显示文字的窗体,那么文字显示的区域,程序也会控制在黑线对应范围。 互联网的一些事以下这些图片,包括异性(非规则图形)图片,也可以通过点九PNG实现横纵向的自然拉伸。 互联网的一些事【draw9patch.bat其他功能说明】② Show loc

2021-12-29 13:14:02 194

原创 Android 常用正则表达式,android编程实战

| 字符 | 说明 || — | — || \ | 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,”n”匹配字符”n”。”\n”匹配换行符。序列”\\”匹配”\”,”\(“匹配”(“。 || ^ | 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与”\n”或”\r”之后的位置匹配。 || $ | 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与”\n”或”\r”之前的位置匹配。 || .

2021-12-28 11:58:03 1085

原创 Android 实现双Launcher的无缝切换,安卓开发面试书籍

} else {j++;}}ComponentName[] set = new ComponentName[size];defaultLauncher = new ComponentName(examplePackageName, exampleActivityName);int defaultMatch = 0;for (int i = 0; i < size; i++) {final ResolveInfo resolveInfo =resolveInfoList.get(i);

2021-12-28 11:56:07 525

原创 Android 外部存储与内部存储详解,嵌入式应用开发工程师

private EditText infoEdt;private TextView txt;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_external);infoEdt = findViewById(R.id.info_edt);txt = findViewById(R.id.te

2021-12-28 11:54:54 211

原创 Android 基础:Fragment的介绍与应用,QQ底栏,flutter瀑布流自适应高度

2.、创建若干个简单的布局(用于fragment的加载),如下:activiy_main为主布局文件,fragment1,fragment2为fragment的布局文件3、创建 Fragment 的类创建Fragment1:创建过程与创建Activity类似,不过继承的是android.support.v4.app.Fragment复写onCreateView函数加载fragment的布局,R.layout.fragment1就是刚刚创建的布局文件。..

2021-12-28 11:53:31 697

原创 Android 四大组件全解读,中高级Android面试中你不得不会的知识点

int main(…){//我的APP从这里开始运行}个人理解:本文的核心思想就是说明,所谓的四大组件,只是让你的APP告诉操作系统,自己要怎样运行而已,跟怎样设计自己的APP,压根没有关系。传统的应用通过一个main方法,告诉操作系统:“嘿哥们,main方法就是我的入口,请从这个方法开始运行我。”而Android却给了你四个选择,每一个组件都是让操作系统运行你的APP的一种入口。好了,操作系统要运行你的APP了,于是它调用你的main方法,然后你的应用就开始运行了,你可以做任何你想做的事情,直

2021-12-28 11:52:25 149

原创 Android中的多线程及AsyncTask的引入,kotlin枚举类反射

本质上来说,多线程的定义都是一样的,软件或硬件上并发地执行多条指令,将CPU的时间片按照调度算法,分配给各个线程,实际上是分时执行的,只是这个切换的时间很短,用户感觉的时候是同时而已。Android大名鼎鼎的四大组件Activity,service,content provider,broadcast receiver,你可能以为它们是多线程运行的,但是实际上默认情况下,在同一个应用程序当中里面的组件都是运行在同一个线程里的。这个线程就是Main线程,更通俗的叫法是UI线程,主要是因为它用来加载UI界面,

2021-12-25 12:30:53 154

原创 Android 程序员不得不收藏的 90+ 个人博客(持续更新,android开发面试

上古大神,现任职微软,[纯纯写作]writer.drakeet.com) 开发者,MultiType 开发者。博客已经无法访问了,如果想找到 Drakeet ,可以加入他的知识星球 Drakeets Pro 。Randy’s Blog任职蚂蚁金服,虽然是一名前端开发,但是大多数文章都值得一读。不仅仅是在技术方面,还有学习,思考,写作和人生。同 Draket 一样,本科退学直接工作,当然 ,你根本用不着退学 。烧饼的博客文章数量不多,但都很有意思。程序亦非猿阿里巴巴资深无线开发工程师。

2021-12-24 12:26:49 410

原创 Android 深入Http(5)从Retrofit源码来看Http,万字Android技术类校招面试题汇总

@GET(“users/{user}/repos”)Call listRepos(@Path(“user”) String user);}这就体现了Retrofit对响应体处理的强大。我们来读Retrofit源码结构吧。Retrofit大致源码解析==============================================================================enqueue我们以下面代码为例子:api.getRepo().enqueue(new

2021-12-24 12:25:31 100

原创 Android 每周一个小轮子之 学习仿网易云广场歌单的效果

LayoutParams是用来协助Viewgoup的,它可以给子View定义一些属性。而且也可以支持margin。我们要给子View定义 :从哪里来(from)到哪里去(to)透明度(alpha)缩放值(scale)所以我们要这样子重写:/**这里要自己写一个ViewGroup的LayoutParams来记录 scale、alpha、from、to*/class RikkaLayoutParams extends MarginLayoutParams {flo.

2021-12-24 12:24:16 449

原创 Android 架构演进及未来,kotlin单例应用

Android市场确实今非昔比,但不仅是Android,互联网行业都一样。移动端招聘量变少,但中高端的职位空缺还很多,你的技术水平和能力提升就变得更加重要。转行的小伙伴也要注意了:最近听其他部门的同事说,招一个Java开发岗,收到了200多份简历,老大面都面不过来…这种高强度的竞争,你有信心胜出吗?移动开发的未来在哪里?React Native、PWA?谈完Kotlin,今年又纷纷讨论Flutter,但是目前还没有大跨步的前进…首先,我觉得Android开发的思维一定不要局限,移动开发不仅仅是

2021-12-24 12:22:59 130

原创 Android 指纹解锁和MD5加密密码,Android社招面经分享

指纹解锁验证keyguardManager.isKeyguardSecure()是否开启:KeyguardManager keyguardManager = getSystemService(KeyguardManager.class);if (!keyguardManager.isKeyguardSecure()) {// Show a message that the user hasn’t set up a fingerprint or lock screen.Toast.makeTex

2021-12-24 12:21:35 238

原创 android 拍照,图库,相册,flutterapp推送

import android.app.Activity;import android.content.Context;import android.content.Intent;import android.database.Cursor;import android.net.Uri;import android.provider.MediaStore;import android.widget.Toast;//在onActivityResult方法中根据requestCode和resultC

2021-12-24 12:20:22 852

原创 Android4,分享PDF高清版

public static DiskLruCache open(File directory, int appVersion, int valueCount, long maxSize)throws IOException {if (maxSize <= 0) {throw new IllegalArgumentException(“maxSize <= 0”);}if (valueCount <= 0) {throw new IllegalArgu..

2021-12-23 12:13:46 103

原创 Android-面试官:View-post()-为什么能够获取到-View-的宽高-?

ActivityThread.javaprivate Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {…// 获取 ComponentNameComponentName component = r.intent.getComponent();…// 创建 ContextImpl 对象ContextImpl appContext = createBaseContextForActivit.

2021-12-23 12:12:39 104

原创 Android-架构组件的最新进展,美团Android面试题

给出 ID 即可自动生成绑定类代码且能保证编译安全,能做到一石 “三” 鸟的视图绑定可在 Android Studio 3.6 Canary 11 或更新版本中用得上。class ProfileActivity:AppCompatActivity {override fun onCreate(savedInstanceState:Bundle?) {val binding = ProfileBinding.inflate(layoutInflater)setContentView(bind

2021-12-23 12:10:12 141

原创 Android-开发你需要了解的那些事:学习路线规划+技术需注意的问题

<android.support.constraint.ConstraintLayout xmlns:android=“http://schemas.android.com/apk/res/android”xmlns:app=“http://schemas.android.com/apk/res-auto”xmlns:tools=“http://schemas.android.com/tools”android:layout_width=“match_parent”android:layout

2021-12-23 12:09:05 98

原创 Android-多渠道打包配置;你了解吗?,android程序员面试笔试宝典

熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main开发、生成环境等等环境可以任意切换打包多渠道打包APK输出文件配置需求一般我们开发的环境分为:debug 和 release,但是你想再分内测1环境、内测2环境等等怎么办呢?这就需要依赖强大的gradle 来配置了。相关的配置也可以参考谷歌官方文档。配置构建类型 buildTypes*名词解析:*我们通常会分不同的编译环境进行打包,比如有debug、release、beta等环境参数,像这种我们就称之为bu..

2021-12-23 12:07:47 128

原创 Android-图片加载框架-Glide-4-9-0-(二)-切入源码层深入分析-Glide-缓存策略

transcodeClass, options);}复制代码class EngineKey implements Key {…@Overridepublic boolean equals(Object o) {if (o instanceof EngineKey) {EngineKey other = (EngineKey) o;return model.equals(oth《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/

2021-12-23 12:06:32 265

原创 Android-内存泄漏问题多多,怎么优化?,安卓开发权威指南

1.2.2 垃圾收集算法前面我们通过引用计数法或可达性分析找到了哪些对象是可以被回收的,本节将重点阐述JVM中的垃圾回收器是如何将这些不可用对象进行回收,即垃圾收集算法,主要包括标记-清除算法、复制算法、标记-整理以及分代收集等。相关介绍如下:标记-清除算法标记-清理算法是最基础的垃圾收集算法,它的实现分为两个阶段,即“标记”和“清除”,其中,标记的作用为通过引用计数法或可达性分析算法标记出所有需要回收的对象;清除的作用为在标记完成后统一回收所有被标记的对象。这种算法比较简单,但是缺陷也比较明显,

2021-12-23 12:05:15 1085

原创 Android-举一反三:12个View绘制流程高频面试题,带你全面理解View的绘制流程

private void installDecor() {mForceDecorInstall = false;if (mDecor == null) {// 生成 DecorViewmDecor = generateDecor(-1);mDecor.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);mDecor.setIsRootNamespace(true);if (!mInvalidatePanelMenuPoste

2021-12-23 12:03:52 150

原创 Android 让Activity部分透明、并作出流畅的进场动画,2020-2021字节跳动Android面试真题解析

android:fromYDelta=“100%p”android:toYDelta=“0” />//出场动画 anim/bottom_out<translateandroid:duration=“300”android:fromYDelta=“25”android:toYDelta=“100%p” />然后在代码中布置好动画:Intent intent = new Intent(BeforeActivity.this, AfterActivity.class);s

2021-12-22 11:53:49 360

原创 Android 要采用 Binder 作为 IPC 机制?,面试看这个就够了

接下来正面回答这个问题,从5个角度来展开对Binder的分析:(1)从性能的角度 **数据拷贝次数:**Binder数据拷贝只需要一次,而管道、消息队列、Socket都需要2次,但共享内存方式一次内存拷贝都不需要;从性能角度看,Binder性能仅次于共享内存。(2)从稳定性的角度Binder是基于C/S架构的,简单解释下C/S架构,是指客户端(Client)和服务端(Server)组成的架构,Client端有什么需求,直接发送给Server端去完成,架构清晰明朗,Server端与Client端相对独.

2021-12-22 11:52:24 107

原创 android 获取 imei号码,android设计模式原则

/*****创建日期 2010-4-29 下午05:02:47**/package net.sunniwell.app;import android.app.Activity;import android.os.Bundle;import android.telephony.CellLocation;import android.telephony.PhoneStateLis..

2021-12-22 11:50:58 105

原创 Android 自定义控件之Scroller与computeScroll的调用关系

2.Scroller只是提供计算,那谁来调用computeScroll使得ViewGroup滑动答:computeScroll也不是来让ViewGroup滑动的,真正让ViewGroup滑动的是scrollTo,scrollBy。computeScroll的作用是计算ViewGroup如何滑动。而computeScroll是通过draw来调用的。3.computeScroll和Scroller都是计算,两者有啥关系?答:文章开始已作答,没有直接的关系。computeScroll和Scroller要是飞

2021-12-22 11:49:33 368

原创 Android 自定义 View _ 扭曲动效,干了5年Android开发还没掌握binder机制

3. drawBitmapMesh简单示例根据参数的含义,我们先初始化这些参数://将图像分成多少格private int carBodyWidthPart = 4;private int carBodyHeightPart = 4;//交点坐《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享标的个数private int carBodyPartCount =

2021-12-22 11:48:08 94

原创 Android 硬布局item的高级写法,搭建android开发环境

android:orientation=“horizontal”android:padding="@dimen/dp_20"><ImageViewandroid:layout_width=“wrap_content”android:layout_height=“wrap_content”android:contentDescription="@string/app_name"android:src="@mipmap/ic_agreement" /><TextViewa

2021-12-22 11:45:18 624

原创 Android 横向ListView实现,Android中为什么需要Handler

import android.widget.ListAdapter;import android.widget.Scroller;import java.util.LinkedList;import java.util.Queue;public class HorizontalListView extends AdapterView {public boolean mAlwaysOverrideTouch = true;protected ListAdapter mAdapter;privat

2021-12-22 11:43:53 81

空空如也

空空如也

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

TA关注的人

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