- 博客(39)
- 收藏
- 关注
原创 Context解析
Context是一个抽象类,内部定义了很多方法和静态常量,其真正的实现类是ContextImpl,而常见的Activity和Service则是通过装饰器的形式去拓展ContextImpl的功能。Context的实现类关系图Activity与Context的关系在Activity的创建过程中,会调用ActivityThread中的performLaunchActivity方法// ActivityThread.javaprivate Activity performLaunchActivity
2021-04-17 19:25:07 254
原创 Android SystemService解析
在日常使用中,我们一般获取系统的服务都是通过Context类来获取,然而在不同的activity中获取到的服务有时是同一个对象,而有时又是不同的对象。这是为什么呢,首先一般获取服务的方法为public abstract @Nullable Object getSystemService(@ServiceName @NonNull String name);那么我们来看一下获取的具体流程和系统如何管理的吧。首先从最常见的activity开始分析// Activity.java@Override
2021-04-17 17:32:07 639
原创 自定义viewgroup踩坑,获取不到子view的margin
今天在使用自定义view时,之前一直只知道父布局负责margin,子布局负责padding。在使用自定义viewgroup时候也没有考虑过margin这个,今天突然想试试,发现了通过child.marginTop获取到的为0,这个时候去看这是一个kotlin的扩展方法,如下inline val View.marginTop: Int get() = (layoutParams as? MarginLayoutParams)?.topMargin ?: 0所以原因多半是来源于获取到的layout
2020-10-10 19:36:24 894 1
原创 100行代码看PorterDuffXfermode对比效果
效果图package com.jiangker.chapter8.viewimport android.content.Contextimport android.graphics.*import android.util.AttributeSetimport android.view.Viewclass PorterDuffXfermodeView @JvmOverloads constructor( context: Context, attrs: AttributeSet?
2020-10-01 12:11:52 196
原创 NDK快速上手笔记
1主要文件介绍展开可以看到C和Java对应文件的位置,C中文件的注册主要是通过CMake文件来指定的在CMakeLists.txt文件中//引入cpp和h文件add_library( //第一个参数就是库的名称,在Java中引入时需要,也对应target_link_libraries的前一个参数 native-lib SHARED //cpp文件的相对路径,可以为多个,在同一个library中注册了都才能相互引用 native-lib.cpp)在java引入
2020-08-14 22:03:50 731
原创 Activity启动流程-android10,SDK29
省略了部分同一个类中重载方法的调用过程,欢迎克隆和点赞,后续会继续完善的https://www.processon.com/view/link/5f2fbc501e085366ab177c6f
2020-08-13 16:31:43 262
原创 Android事件分发机制快速总结
转眼毕业已经一年多时间了,从毕业开始看事件分发,那个时候看了好些天,看的迷迷糊糊的,半年前又重新翻看了一下,算是理解了一些了,今天重新理了一下相关知识,算是一个复习总结吧首先点击事件产生之后,是交给activity来处理的,而activity主要管理的是界面的生命周期,而对于界面的显示等都是由activity中的成员window来管理的,算是一种职责上的分离吧。window中维护的最上层的view就decorView,我们activity中添加的界面就是添加到这个view中的,所以事件会传递到添加到d
2020-08-09 20:38:30 183
原创 android中java与lua的相互调用
Android Studio Lua环境配置开发环境1. Android Studio 3.52. java sdk: 1.8.03.android sdk:28配置环境添加lua支持语法支持插件,打开android studio -> File -> Settings三方库选择参考文章:https://gameinstitute.qq.com/community...
2020-07-15 14:07:40 1135 1
原创 view的事件都返回false为何子view的onTouchEvent会被调用多次
view的事件分发已经看过了挺多的,但是感觉自己虽然照着看了,但是还是有点了解的不是很清醒,然后这次我在想,如果在down事件时候,都是返回false的,那mFirstTouchTarget就为空了,那move事件的时候,就会直接执行这个方法,调用自己的onTouchEvent事件,那子view的就没办法调用了呀,带着这个疑惑我就又重新去翻看了一下,而且一直也只知道没有child的时候会调用自己父类的super.dispatchTouchEvent(event);从而执行onTouchEvent方法,但是不
2020-07-12 14:48:44 481
原创 排序算法复习笔记
排序算法一般都会有几个较为基础通用的方法,如下表方法名作用isSorted()判断数组是否有序less(int item1, int item2)比较第一个参数是否小于等于第二个参数exch(int a, int b)交换这两个索引位置的元素show()打印数组sort()具体待实现的排序算法具体参考如下public abstract class Sort { int[] mList; public Sort(int[] l
2020-07-05 12:40:08 218
原创 JVM运行时数据区学习笔记
1 程序计数器很小的一块内存区域,可以看做是当前线程执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令分支、循环、跳转、异常处理、线程恢复等基础功能都是依赖程序计数器来完成的。所以程序计数器记录的是当前执行的字节码指令地址,当执行完成之后再跳转到下一行,毕竟比如说分支执行完成之前是不知道下一条应该是哪一行的。因为多线程切换后要恢复到正确的执行位置,所以每条线程都需要有一个独立的行号计数器程序计数器也是虚拟机规范中唯一没有指明OutOfMemory
2020-07-04 08:33:01 161
原创 Think in Java总结 -- 19枚举类型
19.1 enum特性enum实现Serializable接口,自动添加了equals和hashCode方法方法名称含义enums.values()返回类元素的数组enum.ordinal()返回次序的int值enum.getDeclaringClass()全类名Enum.valueOf()根据名字返回实例19.1.1 支持静态导入1...
2020-04-21 18:40:06 207
原创 RecyclerView 以简单的方式实现层级数列
查阅了很多关于层级数列的,笔者技术薄弱,因为用到了注解和反射什么的,感觉看起来比较复杂,所以想是否可以有别的方式实现,尝试了会儿之后实现了如图的效果方块为占位的列项,具体图片自行更换首先每列都为ImageView + TextView 所以xml文件是这样的list_item.xml<RelativeLayout xmlns:android="http://schemas.andr...
2019-11-07 10:29:14 641
原创 在fragment中引用ListView-ListFragment的使用
前言:这个是之前那个LIstFragment的重新排版,已经把所以使用的代码都罗列出来了,比较简单,就不过多赘述了,只有几个关键地方已经提及,需要可以复制过去看看整体流程和使用ListView的流程差不多,首先是创建一个list_item.xml文件,用来表示要被复用的条目,然后是Food.java-需要在List中展示的对象,然后是ListMainAdapter.xml:用于对item的复用以...
2019-10-26 10:58:57 1500 1
原创 MyBatis与Spring的整合-Mapper自动映射踩坑(org.apache.ibatis.binding.BindingException: Invalid bound statement )
今天学习MyBatis与Spring的整合这一个部分,然后按照书来编辑了代码,结果死活一直报org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.com.sm.mapper.UserQueryMapper.findUserById这个错误,然后在网上找了好多资料都没有解决问题,一直感觉...
2019-10-17 15:37:52 1120
原创 spring ioc学习笔记
导入包gradle导入方式compile group: 'org.springframework', name: 'spring-webmvc', version: '5.2.0.RELEASE'springmvc maven仓库地址spring ioc主要有两种方式注入bean,首先是xml方式配置xml格式<?xml version="1.0" encoding="UTF-...
2019-10-11 10:48:24 158
原创 java.lang.IllegalStateException: Failed to load ApplicationContext
今天学习spring的事务,用测试,结果一直出现java.lang.IllegalStateException: Failed to load ApplicationContext这个错误,一度在网上找了许多资料,说是xml文件配置出了问题,但是我的xml文件并没有问题@RunWith(SpringJUnit4ClassRunner.class)@ContextConfigura...
2019-10-10 18:16:25 320
原创 IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling
最近在做一个项目的时候,是一个加上checkbox的recyclerview,然后选中状态或者取消时候有相应的效果产生,然后有button用于增加或者减少item的个数,然后发现点击过快或者有些时候会出现这样一个错误IllegalStateException: Cannot call this method while RecyclerView is computing a layout o...
2019-07-24 18:50:50 1696
原创 添加AIDL文件之后出现ERROR: Process 'command '......finished with non-zero exit value -1073741819
最近开始接触aidl,但是发现按照教程那样添加aidl之后会出现这样一个错误,如下图所示:大致详细信息是这样的Process 'command '......finished with non-zero exit value -1073741819然后在网上查阅了很多的文章,大致分为两种,一种是修改 build.gradle 文件:在 android{} 中间加上下面的内容:sou...
2019-06-17 12:32:49 3273
原创 JSONObject以及GSON解析Json文件之Json分析
首先看这次举例的Json文件,我觉得文件不应该太多无关紧要的影响阅读的东西,但是也需要具有概括性,所以自己编写了一个Json文件,然后试着自己去解析{"name":"jiangker","age":18,"love":["run","swmmnig"],"friends":[{"name":"li","age":16},{"name":"power","age":17...
2019-06-15 09:34:52 1420 1
原创 git提交文件查看日志以及修改文件名
这些git操作都必须在项目的路径下才能进行在添加新文件时候需要先用git add 文件(可以多个文件)然后再使用git commit -m'提交的说明'git add -u (添加git跟踪的所有文件)重命名文件git mv oldName newName使用此命令等同于使用mvoldName newNamegit add newNamegit ...
2019-02-18 09:20:30 2277
转载 git建立代码仓库
建立代码仓库的场景有两种第一种是在已有项目的基础之上建立这个项目的仓库cd *** (找到项目文件夹所在的路径)git init 第二种是在指定路径下创建项目的文件夹并绑定仓库cd ***(指定路径或某个路径)git init myProject (myProject表示想要建立项目的名称)cd myProject...
2019-02-17 20:13:17 632
转载 Git 使用前的基本配置
git的操作一般都是在终端中进行的,这里介绍一些常用的git的操作首先安装好了git之后查看git的版本号可以使用:git --version然后配置git的个人基本使用信息,方便提交代码之后查看是谁提交的代码,这里的名字和地址都是自己填写就可以了,例如:git config --global user.name 'jiangkerLove'git config --global ...
2019-02-17 16:48:52 243
转载 Android广播使用
在安卓开发中,当我们需要接收系统发出或者别的程序发出来的消息的时候,就需要用到广播接收器。或者我们需要在应用之中传递一些数据时,我们也可以用本地广播来发送和接收这些消息。 1:接收系统广播接收系统的广播一般有两种方法,动态注册监听和静态监听注册。一般常用动态监听,因为动态灵活,但是在应用未启动时候不能监听变化,所以一般我们用静态监听在应用未启动的时候监听一些广播。动态监听写法...
2019-01-27 18:36:02 6819
转载 Activity和Service通信
首先介绍一下Service,Service是用来方便我们去管理子线程的,以免子线程变成野线程不方便管理,其中有onCreat、onStartCommand、和onDestory方法onCreat方法是服务创建是调用,多次启动也之会调用一次onStartCommand是每一次服务启动都会调用一次,一般的逻辑代码都写在这里onDestory是在服务销毁是会调用,一般用于回收不再使用的资源...
2019-01-17 13:16:07 2714
转载 两个杯子倒水的问题
现在只有两只杯子,容量分别是:5升和7升,问题是:在只用这两个杯子的前提下,如何才能得到4升水?假设:水可以无限使用。之前在做一个笔试的时候就做过类似的题目,也是两个杯子倒水的问题,今天又再次看到了这个问题,在这里贴出文章的链接https://mp.weixin.qq.com/s/OZ3hlWM84L1GXv_nZdTiqQ文中提了一个很不错的思路:小容量的杯子不断往大杯子里面倒水,大杯子...
2019-01-16 19:17:24 8967 4
原创 Activity的生命周期总结
说到Activity,就不得不提起他的四种状态和七个回调方法了四种状态:active:运行状态,可见可交互paused:可见不可交互stopped:存在但不可见(任务键这种界面也叫的是不可见)kill:销毁状态其中容易被系统回收的容易程度是依次增加的七种回调方法:onCreate:第一次创建时调用,一般用于初始化操作onStart:由不可见变为可见时调用on...
2019-01-16 18:46:08 264
原创 导入支持库之后出现java.lang.RuntimeException
不知为什么这次创建了一个moudle导入支持库之后出现了Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] A...
2019-01-10 18:05:13 7658
原创 RecyclerView的基本使用总结(Androidx)
作为一个初学者,接触RecyclerView已经有了一年多的时间了,虽然比ListView一些方面要显得麻烦,但可以实现的功能也更加多样,感觉真的很强大和实用,在这里总结一下常用的使用。RecyclerView的核心就是回收和复用view。所以首先我们理清思路就是创建一个可以复用的view item,然后利用复用机制在我们想添加列表的位置复用view就好。由于现在And...
2018-12-11 22:15:30 790
原创 AlertDialog
public void onClick(View v) { new AlertDialog.Builder(MainActivity.this) .setTitle("This is Dialog~")//title .setMessage("Are you sure?")//text .setCan...
2018-10-10 10:12:37 147
原创 ProgressDialog
public void onClick(View v) { ProgressDialog progressDialog =new ProgressDialog(MainActivity.this); progressDialog.setMessage("....."); progressDialog.setTitle("This is Dialog");...
2018-10-10 10:12:02 320
原创 安卓菜单的几种形式
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:i...
2018-10-10 09:30:50 2241
原创 三种基本menu菜单的用法
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:i...
2018-08-19 16:29:57 6356
原创 在fragment中引用ListView
前言:前段时间想在fragment中做出一个ListView列表,不过一直都是UI的闪退,让我一直不知道怎么办,很是苦恼,不过后来才发现了一个新的东西叫做ListFragment,所以这次主要是讲一下如何使用ListFragment建立一个简单的列表首先需要新建一个fragment引用ListFragment,以及这个fragment的布局文件,这个布局用于容纳由adapter适配好的v...
2018-04-16 22:35:39 11222 9
原创 添加recyclerview-V7时导致的错误如何解决
当你要使用RecyclerView时,首先需要在file的Project Structure中选择添加一个recyclerview-V7的支持库这个时候就可以使用了,不过这时你可能会发现弹出了一个标有错误的XML文件,然后java代码中的R文件也失效了。大家应该也知道,R文件失效的一个主要的原因就是XML文件出现了错误。这时我们找到 这个文件,如何找到dependenc...
2018-03-28 11:25:58 4901 2
原创 从命令行使用Gradle
首先使用命令行切换到项目目录并执行以下的命令:Mac:./gradlew tasks执行这个命令后会看到一系列可以使用的任务,我们所需要的是installDebug,所以./gradlew installDebug即把应用安装到当前链接设备上,手动启动运行。Win:gradlew.bat tasksgradlew.bat installDebug...
2018-03-10 16:07:30 1658
原创 UI控件之监听器的四种实现方式
1 成员内部类的实现方式XML:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xml...
2018-03-07 14:33:37 515
原创 android布局之线性布局的属性用法
1 gravity属性gravity:用于设置该控件内容相对于该控件的相对对齐方式layout_gravity:用于设置该控件相对于父控件的相对对齐方式举例:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi...
2018-03-07 13:44:49 6066
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人