自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android View Binding使用详解,移动开发框架

…buildFeatures {viewBinding true}}如果你那个布局文件不需要生成绑定类(不想用这个功能),请将该 tools:viewBindingIgnore=“true” 属性添加到该布局文件的根视图中:<LinearLayout…tools:viewBindingIgnore=“true” >…使用如果为Module启用了视图绑定,则会为Module包含的每个 XML 布局文件 生成一个绑定类。每个绑定类都包含对根视图和所有具有 ID 的视图的引用。

2022-02-18 13:14:00 940

原创 Android studio录屏按钮不能用怎么办,androidapp内存优化

再看这张图,连接华为手机不能录屏,我便打开了我的genymotion,如青框中显示Unknown Custom Phone - 5.0.0 - API 21 - 768×1280 Android 5.0 API 21令人兴奋的是红框中的录屏按钮是可用的,明显不是灰色的。我兴奋的点击浅黄色录屏按钮 :看来是有戏啊!点击Start Recording按钮:再点击OK这时候其实就能感觉不对劲了,还没开始录呢,怎么视频都保存好了呢?找到该视频文件:发现该视频文件大小是 0 字节,空欢喜一场。

2022-02-18 13:12:35 764

原创 Android Studio制作,字节跳动Android内部学习资料泄露

======如果你进行Android开发一段时间还不知道什么是JNI的话,说明你还是初学者,没有理解Java层跟Native层之间是如何交互的。JNI(Java Native Interface的缩写),Java层通过JNI来调用Native层的功能模块,这样做的好处是能消除平台的差异性,避免重复制造轮子。Java的跨平台性也体现在这里。如何通过JNI调用Native层的c/c++代码,可以参考我的一篇文章:JNI_最简单的Java调用C/C++代码注:window的动态库是.dll文件,而Lin

2022-02-18 13:11:11 260

原创 android studio签名打包详解,kotlin入门好书

所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证如果要正式发布一个Android应用,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能签名后需使用zipalig..

2022-02-17 18:25:06 314

原创 Android studio数据如何发送IIS服务器保存SQL Server 2014数据库,android基础视频教程

response = mOkHttpClient.newCall(request).execute();if (response.message().toString().equals(“OK”)){System.out.print(“发送成功”);}else {System.out.print(“发送失败”);}} catch (IOException e) {e.printStackTrace();}}1.4 AppConfig.java中,设置自己C#的ip地址public st

2022-02-17 18:23:42 141

原创 Android studio录屏按钮不能用怎么办,Android多态实现原理

再点击OK这时候其实就能感觉不对劲了,还没开始录呢,怎么视频都保存好了呢?找到该视频文件:发现该视频文件大小是 0 字节,空欢喜一场。于是我又打开了genymotion 中的一个模拟器:继续点击录制:点击Start Recording:看来真的在录屏,停止录屏,保存文件,查看录制视频。皇天不负有心人啊!终于成功了。当你的Android studio 录屏按钮不能用时,可以换个手机试试。原因很可能是你手机的问题,我的studio就是连接华为honor V8的不能录屏,但是连接op

2022-02-17 18:22:17 808

原创 Android studio安装配置(windows下),kotlin协程源码分析

点击finish完成项目创建可能遇到问题:1.安装Android studio之前要先安装java jdk,jdk下载地址https://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html2.由于下载的sdk可能导致失败,可以下载一个外部sdk再导入,以下提供下载地址https://developer.android.com/studio/index.html (需翻墙)htt...

2022-02-17 18:20:52 208

原创 Android studio 使用问题汇总,android项目实战

然后我们需要修改的是我们根目录的下的settings.gradle这个文件,一定要注意是根目录下的。在里面添加如图所示的代码 添加的是我们类库的名字,只能是手动修改。3.接下来我们还要修改的是App目录下的build.gradle,这里要注意是App目录下的build.gradle,添加如下代码dependencies {compile project(’:SlidingMenu-master’)}这个也是我们导入类库的名字。这个时候我们打开File— >Project Structure

2022-02-17 18:19:27 1155

原创 Android Studio 3,阿里+头条+抖音+百度+蚂蚁+京东面经

好了,下面介绍下,如何修改:第一步,如果你之前已经有安装过AS版本,并且是默认配置在C盘的,那么首先你把C盘的那两个文件夹原封不动的复制到其他盘,新建一个目录放进去,我是建的D:/Android。第二步,打开AS安装目录下的\android-studio\bin\idea.properties文件,修改下面内容(如果你之前已经配置过了,现在是重新安装新版本的AS也要重新配置这个文件)这四个地方原本默认是被注释掉的,也就是默认会使用你的C盘,这里需要你打开注释,然后修改为第一步你新建的缓存目录即可。.

2022-02-17 18:18:02 159

原创 Android Settings和SettingsProvider源码分析与修改,大厂首发

0x200000014=0x02010601;0x200000015=0x03020101;0x200000016=0x03010201;0x200000023=0x02000301;0x200000024=0x02010301;0x200000037=0x03070201;0x200000038=0x03000701:0x03010701:0x03020701;https://ssl.gstatic.com/accessibility/javascript/andr

2022-02-17 18:16:37 1066

原创 Android OkHttp使用和源码详解,【高级Android架构师系统学习

} catch (IOException e) {if (signalledCallback) {// Do not signal the callback twice!Platform.get().log(INFO, "Callback failure for " + toLoggableString(), e)

2022-02-15 13:25:06 143

原创 Android NDK:在Android Studio下的基本开发步骤和基础知识点总结

javah -d (jni新建文件名) -classpath (sdk路径);(class 路径) (class文件名,包括包名)-d 输出目录,jni是gradle默认的路径-classpath jar的路径,有时碰到的找不到Activity的类的错误可能是由这个引起的com.zhuanghongji.ndkdemo.JNITest 包名+类名执行上述命令发现在main目录下多了一个jni文件夹,而且里面有生成好的头文件:com_zhuanghongj

2022-02-15 13:23:41 2809

原创 Android MediaCodec硬编码H264文件(四),字节跳动Android面试

}// 调用 stop 方法进入 Uninitialized 状态codec.stop();// 调用 release 方法释放,结束操作codec.release();代码解析MediaFormat 设置首先需要创建并设置好 MediaFormat 对象,它表示媒体数据格式的相关信息,对于视频主要有以下信息要设置:颜色格式码率码率控制模式帧率I 帧间隔其中,码率就是指单位传输时间传送的数据位数,一般用 kbps 即千位每秒来表示。而帧

2022-02-15 13:20:51 868

原创 android io,一线互联网大厂中高级Android面试真题收录

try {String be = text.substring(0, text.indexOf("["));String af = text.substring(text.indexOf("["));String bb = be + “[“test”,{“data”:[” + af + “]}]”;listener.onMessage(webSocket, bb);} catch (Exception e) {e.printStackTrace();}} else {listener.on

2022-02-15 13:18:01 1843

原创 Android Fragment+NestedRadioGroup仿微信主界面(带底部图标切换页面无滑动)

android:layout_width=“match_parent”android:layout_height=“0dp”android:layout_weight=“1.0” >3.2 底部带的三个图标<com.demo.test.view.NestedRadioGroupandroid:id="@+id/rg_main_tabbar"style="@style/Bottom.MainTabBar" ><FrameLayoutandroid:layout_wid

2022-02-15 13:15:11 158

原创 Android CheckedTextView 使用+实例,android快速开发平台

第一次点击无效android:focusableInTouchMode=“true”,这个属性加上会导致第一次点击触发不了选择事件。实例–官方文档指出,结合ListView使用更佳,咱下面通过一个栗子了解一下,下面是效果图:1.主界面CheckedTextViewActivity.javapublic class CheckedTextViewActivity extends AppCompatActivity {private L

2022-02-15 13:13:46 296

原创 Android中常见的设计模式,分享我在Android开发中走的一些弯路

/**@Decription 登陆**/void login(final Context context, final String name, final String psw, final ICallBackObject callBack);}定义不同的实现方法public class BmobUserManager implements IUserManager {@Overridepublic void register(UserDALEx user, final ICallBa

2022-02-05 11:12:05 101

原创 android中WebView附件问题解决(1),安卓开发必须会的技能

没有头绪的时候,我用qq做了一个测试,把我们的html链接发到我手机qq上 ,然后在qq上点击html上的附件,发现是先下载,然后提示用手机上相关软件打开,比如 三方浏览器(UC浏览器,QQ浏览器)还有office等。后来我们也就没做在线解析直接打开,也是做的像qq一样先下载然后依赖第三方软件打开。我觉得也比较合理(1.这种功能没有必要花那么多时间做的那么复杂  2.遵循主流软件处理方式)。webview下载文件的代码:package com.baobao.webview;import c

2022-02-05 11:09:15 174

原创 Android——SimpleAdapter的简单使用,写给即将正在找工作的Android攻城狮

1. Adapter(图源自网络)在Android中,Adapter(适配器)是数据与ui之间的桥梁,它把后台数据与前端ui连接到一起,是一个展示数据的载体。Adapter有很多的接口、抽象类、子类可以使用,以下是常用的几个适配器。BaseAdapter:是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;ArrayAdapter:支持泛型操作,最为简单,只能展示一行字。SimpleAdapter:有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter:可

2022-02-05 11:06:25 752

原创 Android——service使用详解,经典实战教程

android:enabled=[“true” | “false”]android:exported=[“true” | “false”]android:icon=“drawable resource”android:isolatedProcess=[“true” | “false”]android:label=“string resource”android:name=“string”android:permission=“string”android:process=“string” &g

2022-02-05 11:05:00 1910

原创 Android-高质量开发之崩溃优化,kotlin循环for

系统的信息有时候会带有一些关键的线索,对我们解决问题有非常大的帮助。Logcat。这里包括应用、系统的运行日志。由于系统权限问题,获取到的 Logcat 可能只包含与当前 APP 相关的。其中系统的 event logcat 会记录 APP 运行的一些基本情况,记录在文件 /system/etc/event-log-tags 中。//system logcat:10-25 17:13:47.788 21430 21430 D dalvikvm: Trying to load lib …//event

2022-02-05 11:03:34 269

原创 Android-音视频学习系列(一)-JNI-从入门到精通,android移动应用基础教程

//12.1 获取字节码const char *person_class_str = “com/devyk/ndk_sample/Person”;//12.2 转 jni jclassjclass person_class = env->FindClass(person_class_str);//12.3 拿到方法签名 javap -aconst char *sig = “()Ljava/lang/String;”;jmethodID jmethodID1 = env->GetMet

2022-02-05 11:02:09 195

原创 Android-自定义标题栏,作为Android程序员

这里使用到了一个图像资源,是在drawable目录下的:/02_CustomTitle/res/drawable/rectangle.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android=“http://schemas.android.com/apk/res/android”android:shape=“rectangle” ><gradientandroid:angle=“270”andr.

2022-02-05 11:00:44 280

原创 Android-自定义图像资源的使用(1),androidstudio模拟器无响应

这个图像资源是使用标签的,这个标签下有很多属性,如下:<?xml version="1.0" encoding="utf-8"?><bitmapxmlns:android=“http://schemas.android.com/apk/res/android”android:src="@[package:]drawable/drawable_resource"android:antialias=[“true” | “false”]android:dither=[“true” |

2022-02-05 10:59:19 2181

原创 Android 轻量级存储方案的前世今生,kotlin处理null异常

sp.edit().putString(“c”, “dmn”).apply();每次调用 edit 方法都会创建一个 Editor 对象,造成额外的内存占用。很多设计者会对 SharedPreferences 进行封装,隐藏掉 edit()和commit/apply()调用流程,但往往同时也忽略了Editor.commit/apply()的设计理念和使用场景。如果是复杂的场景,用户可以在多次 putXxx 方法之后再统一进行 commit/apply(),也就是一次更新多个键值对,只进行一次 IO 操作。

2022-02-04 12:00:21 1378

原创 Android 让Activity部分透明、并作出流畅的进场动画,看完我工资从12K变成了20K

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

2022-02-04 11:57:31 791

原创 Android 自定义注解详解,字节跳动资深面试官亲述

2、由于反射对性能会有一定的损耗,所以上述类型的注解处理器并不占主流,现在使用最多的还是 AbstractProcessor 自定义注解处理器,因为后者并不需要通过反射实现,效率和直接调用普通方法没有区别,这也是为什么编译期注解比运行时注解更受欢迎,但是并不是说为了性能运行期注解就不能用了,只能说不能滥用,要在性能方面给予考虑。目前主要的用到运行期注解的框架差不多都有缓存机制,只有在第一次使用时通过反射机制,当再次使用时直接从缓存中取出。好了,说着说着就跑题,我们还是来聊一下这个 AbstractProce

2022-02-04 11:53:17 789

原创 android 网络实时监听网络状态变化 及 网络类型判断,【面试总结

public static final int NETWORK_TYPE_HSPAP = 15;public static final int NETWORK_TYPE_HSUPA = 9;public static final int NETWORK_TYPE_IDEN = 11;public static final int NETWORK_TYPE_LTE = 13;public static final int NETWORK_TYPE_UMTS = 3;public static fin

2022-02-04 11:51:51 1454

原创 Android 打开飞行模式和拔出耳机时自动退出FM Radio应用

// switch antenna should not impact audio focus statusmValueHeadSetPlug = (intent.getIntExtra(“state”, -1) == HEADSET_PLUG_IN) ? 0 : 1;switchAntennaAsync(mValueHeadSetPlug);+//{@TChip ZJ Add START+if(mValueHeadSetPlug == 1 && mIsPowerUp )+{

2022-02-04 11:49:01 1549

原创 Android 性能优化—— 启动优化提升60,android蓝牙开发实例

其实这种方式并没有真正的加速应用进程的启动速度,而只是通过用户视觉效果带来的优化体验。_3_代码优化当然上面使用设置主题的方式优化用户体验效果治标不治本,关键还在于对代码的优化。首先我们可以统计一下应用冷启动的时间。冷启动耗时统计adb 命令统计参考如何计算 App 的启动时间http://www.androidperformance.com/2015/12/31/How-to-calculation-android-app-lunch-time/adb命令 : adb shell am.

2022-02-04 11:47:36 224

原创 Android-面试官:这些Java知识点我必问,面试官突击一问

多态:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A 系统访问B 系统提供的服务时,B 系统有多种提供服务的方式,但一切对A 系统来说都是透明的。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要

2022-02-03 15:13:27 136

原创 Android-面试官:这些Java知识点我必问(1),面试安卓

当链表中没有数据时,first 和 last 是同一个节点,前后指向都是 null;3、你在工作中对 ArrayList 和 LinkedList 是怎么选型的?如果项目中有需要快速的查找匹配,但是新增删除不频繁我一般使用的是 ArrayList 数组结构,但是如果查询比较少,新增和删除比较多我一般用的是 LinkedList 链表结构。(ps:结合它们的原理回答为什么)4、 ArrayList 在多线程使用应该注意什么?在多线程使用 List 要注意线程安全问题,解决的办法通常有两种来解决。第.

2022-02-03 15:12:02 1150

原创 Android-深入底层:Linux事件管理机制-epoll,android软件安全权威指南

当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽。2. epoll_ctl将被监听的描述符添加到epoll句柄或从epool句柄中删除或者对监听事件进行修改。函数申明:int epoll_ctl(int epfd, int op, int fd, struct epoll_event*event);参数:epfd: epoll_create()的

2022-02-03 15:10:37 668

原创 Android-技术的下半场,Android开发者出路在哪

如果想成为优秀、不担心淘汰的工程师,绝不是一味跟风新技术,今天学Kotlin、明天学Flutter,疲于奔命;而应该持续努力去完善自己的知识体系,保持一定的技术深度。因此,本专栏希望在大家做UI、界面开发之余,分享一些Android架构方面的知识和技能。希望且相信这些技能能够让读者真正摆脱技术焦虑,最终找到自己的方向和竞争力。业务同学需要了解架构吗?有的同学会问,我平常都在写业务代码、写页面、调用SDK,有必要去了解架构吗?答案很简单,业务是表,架构是里。变化万千的业务背后都是大同小异的架构。时代更

2022-02-03 15:09:12 170

原创 android-使用PopupWindow实现随机排列的自定义密码键盘

String str = randomKeys[6]+"";editable.insert(index, str);}});btn7.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKey

2022-02-03 15:07:47 217

原创 Android图片加载框架最全解析(一),app开发入门教程

首先,调用Glide.with()方法用于创建一个加载图片的实例。with()方法可以接收Context、Activity或者Fragment类型的参数。也就是说我们选择的范围非常广,不管是在Activity还是Fragment中调用with()方法,都可以直接传this。那如果调用的地方既不在Activity中也不在Fragment中呢?也没关系,我们可以获取当前应用程序的ApplicationContext,传入到with()方法当中。注意with()方法中传入的实例会决定Glide加载图片的生命周期,

2022-02-02 13:51:17 286

原创 android图片加载库Glide4使用教程(项目中如何快速将Glide3替换成Glide4)

//禁用掉Glide的缓存功能options.diskCacheStrategy(DiskCacheStrategy.NONE);Glide.with(this.getApplicationContext()).load(url).apply(options).into(mImage);这里就是Glide4和Glide3的最大不同,他将部分API功能封装在RequestOptions 中,在通过apply方法,传递给Glide使用,这样我们就可以很方便的在需要的地方可以进行不同的配置了,不用像G

2022-02-02 13:49:51 284

原创 Android利用selector(选择器)实现图片动态点击效果,android热修复视频

第二步:创建selector_setting.xml文件:第三步,找两张不同的图片(博主是用shape实现的):如下:setting_press.xml实现的效果:setting_normal.xml实现的效果:源码如下:selector_setting.xml:<?xml version="1.0" encoding="utf-8"?> setting_press.xml:<?xml version="1.0" encoding="utf-8"?&gt.

2022-02-02 13:48:26 701

原创 Android判断Activity是否在AndroidManifest,移动端应用开发试题

throw new IllegalStateException(“Cannot start assistant activity on a hidden session”);case ActivityManager.START_CANCELED:throw new AndroidRuntimeException("Activity could not be started for " + intent);default:throw new AndroidRuntimeException("Unkno

2022-02-02 13:47:01 283

原创 Android使用SharedPreferences存储数据,androidtv开发视频教程

SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences的实例,只能通过Context提供的getSharedPreferences(String name,int mode)方法来获取SharedPreferences的实例:其中有两个参数:第一个参数用于指定SharedPreferences文件的名称(格式为xml文件),如果该名称的文件不存在则会创建一个。第二个参数用于指定操作的模式,如下。MODE_PRIVATE:默认操作模式,只有本应用程序才可以

2022-02-02 13:45:36 114

空空如也

空空如也

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

TA关注的人

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