android
文章平均质量分 50
code作业本
这个作者很懒,什么都没留下…
展开
-
Android项目中配置gradle自动上传蒲公英
gradle中配置自动让项目编译完成将apk包上传到蒲公英原创 2023-03-22 13:46:08 · 234 阅读 · 0 评论 -
SeetaFace6编译过程for Android
SeetaFace6编译for Android下载页面地址:https://github.com/SeetaFace6Open/index#下载命令,如果下载失败,可以逐个项目进行下载git clone --recursive https://github.com/SeetaFace6Open/index.git以上项目中需要先编译以下三个项目,其他项目才能正常编译通过OpenRoleZooSeetaAuthorizeTenniSAndroid 平台编译说明下载配置Android原创 2022-05-19 15:06:53 · 1159 阅读 · 3 评论 -
谷歌官方Android studio所有历史版本下载地址
下载地址https://developer.android.google.cn/studio/archive#android-studio-3-0?utm_source=androiddevtools&utm_medium=website原创 2022-05-12 16:19:24 · 2194 阅读 · 1 评论 -
Android源码编译基于ubuntu20.04和Pixel3真机
1.清华aosp源码下载,配置地址https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/2.通过修改环境变量文件更新****REPO_URL的地址https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/3.Android各版本分支名称列表https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds4.源码下载好以原创 2022-04-12 11:10:27 · 2510 阅读 · 0 评论 -
Kotlin中with、let、run、apply、also的使用区别汇总
偷个懒,仅找了几个表格对别,方便以后查看使用区别函数名函数块内使用对象返回值是否扩展函数适用场景withthis函数块最后一行或return表达式的值否适用于调用同一个类多个方法letit函数块最后一行或return表达式的值是适用于对象统一处理不为空的情况runthis函数块最后一行或return表达式的值是适用with()、let()函数的任何场景applythis该对象是适用于run()函数的任何场景,通产可用来在初始化一原创 2022-03-07 17:59:35 · 692 阅读 · 0 评论 -
AndroidStudio通过External tools配置查询方法签名
AndroidStudio通过External tools配置查询方法签名第一种方法:通过javac -h命令查看,会生成.h文件,在.h文件中查看Arguments参数中将生成的文件放到了build目录下老版本用的javah,新版本用的javac -h通过File>Settings>tools>ExternalTools进行配置-d 生成文件目录-h 生成.h文件路径 目标源文件Arguments中内容-d$ContentRoot$\build\tmp-h$Co原创 2022-02-16 09:48:35 · 1386 阅读 · 0 评论 -
Android源码中的FLAG为何使用16进制
1、在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志。比如View.java中的/** * This view does not want keystrokes. Use with TAKES_FOCUS_MASK when * calling setFlags. */private static final int NOT_FOCUSABLE = 0x00000000;/** * This view wants keystrokes.原创 2022-02-10 23:47:31 · 382 阅读 · 0 评论 -
Gradle多渠道打包
Gradle多渠道打包app/build.gradle android{ signingConfigs { release { storeFile file("../存放key的位置") storePassword "***" keyAlias "***" keyPassword "***" }原创 2021-11-02 11:39:01 · 1160 阅读 · 0 评论 -
Android布局优化:include、merge、viewstub使用区别
Android布局优化:include、merge、viewstub使用区别一 include标签的使用:文件1:titlebar.xml文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_原创 2021-09-03 14:24:19 · 229 阅读 · 0 评论 -
AndroidTest单元测试时获取不到assets目录下文件问题
AndroidTest时获取不到assets目录下文件问题读取assets目录有两种方式获取src/main/assets目录中的资源文件Context ctx = InstrumentationRegistry.getTargetContext(); 获取src/androidTest/assets目录中的资源文件Context ctx = InstrumentationRegistry.getContext(); src/androidTest下创建assets目录可以原创 2021-08-30 09:22:31 · 1797 阅读 · 0 评论 -
Android单元测试网络请求问题
Android通过单元测试网络请求问题单元测试中想使用okhttp但是发现okhttp回调方法不执行,发现网络请求是异步请求原因,导致断点不能拦截,解决办法需要调用okhttp的同步请求方式进行网络请求,然后单元测试时选择debug模式执行,运行速度相对慢一些,可以得到Response。下面是示例:代码比较老,用的是对okhttp进行封装的库:https://github.com/hongyangAndroid/okhttputils这个库的同步请求和异步请求查看git中的文档,execute中原创 2021-08-28 15:54:02 · 539 阅读 · 0 评论 -
解决Androidstudio加载编译时kotlin-compiler-embeddable一直下载中的问题
解决Androidstudio加载编译时kotlin-compiler-embeddable一直下载中的问题打开网址https://mvnrepository.com/搜索kotlin-compiler-embeddable进入kotlin-compiler-embeddable点入所需jar包,file后面下载所需jar包版本...原创 2021-06-29 09:33:09 · 5598 阅读 · 5 评论 -
Android中.9.png文件的制作
Android中.9.png文件的制作Android中.9文件是通过Androidstudio中创建制作的首先在Androidstudio中找到png的图片,通常png的图片都放在mipmap文件夹中在png图片上右键菜单中找到Create 9-path file弹出窗口对.9.png文件选择目录保存双击刚刚创建好的.9.png文件窗口中有两个功能菜单9-Path:制作.9文件菜单ImageFileEditor:这个功能很好用,对图片中的颜色进行拾取颜色,可以直接返回颜色的16进制数值原创 2021-06-09 10:08:53 · 617 阅读 · 0 评论 -
Jetpack中BindingAdapter的使用简单记录
BindingAdapter的简单使用首先回顾一下kotlin中实现静态方法通过伴生对象实现这样当前类中所有的方法都可以直接类.方法名()调用class ClassName{ //包裹你要调取的方法 companion object { //带有参数及返回值的方法 fun staticFunName(context: Context): Int { } }}通过将class关键字修改为object原创 2021-04-26 17:18:38 · 437 阅读 · 0 评论 -
Android的Jetpack组件DataBinding中如何使用include标签
activity_main.xml文件<?xml version="1.0" encoding="utf-8"?><layout 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"> <.原创 2021-04-26 16:07:12 · 618 阅读 · 3 评论 -
Android中Jetpack组件DataBinding使用详解
1.DataBinding在xml文件中的使用首先打开dataBinding开关使用DataBinding首先在build.gradle文件中开启Databinding同时开启viewBinding,需要能自动生成xml的Viewbinding文件 android { dataBinding { enabled = true } //或者 buildFeatures {原创 2021-04-23 09:11:13 · 316 阅读 · 0 评论 -
Android中LiveData组件在ViewModel组件中的使用
LiveData的优势确保界面符合数据状态不会发生内存泄漏不会因Activity停止而导致崩溃不用手动处理生命周期数据始终保持最新状态适当的配置修改共享资源 //版本号根据实际情况添加 implementation "androidx.fragment:fragment-ktx:1.3.2" implementation 'androidx.activity:activity-ktx:1.3.0-alpha05'版本号参考:Activity:https://dev原创 2021-04-16 16:45:22 · 299 阅读 · 0 评论 -
Jetpack通过kotlin使用Lifecycle方式及注意点
Lifecycle使用Lifecycle与组件一些组件需要监听Activity生命周期,则在相应的方法添加注解进行监听 //文件1:被监听的组件中,class需要实现LifecycleObserver接口 @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) private fun onResumeEvent(){} //方法名称随意命名,注解要根据具体需求的回调进行声明 //文件2:Activity中对组件进行注册 lifecycle.原创 2021-04-14 18:05:24 · 873 阅读 · 0 评论 -
ConstraintLayout使用
ConstraintLayout使用//设置margin属性时,如果针对没有约束的边进行margin属性设置是无效的ConstraintLayout//基于baseline对齐app:layout_constraintBaseline_toBaselineOf="" //偏移属性,范围0-1app:layout_constraintHorizontal_bias="0.39" //针对设置的约束的布局不可见时,goneMargin属性起作用,会对当前布局起到margin作用app:layo原创 2021-04-09 01:27:25 · 152 阅读 · 0 评论 -
Android计算时间差
java try { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startTime = df.parse("2018-01-01 12:10:10"); Date endTime = df.parse("2018-01-01 14:10:10"); long diff = startTime.get原创 2021-04-08 11:15:35 · 235 阅读 · 0 评论 -
Jetpack中的Navigation组件使用
Navigation组件使用1.通过Activity的xml布局文件中创建一个fragment <fragment android:id="@+id/my_nav_host_fragment" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="原创 2021-04-06 15:49:49 · 134 阅读 · 0 评论 -
Kotlin委托模式
Kotlin中委托相关解释代理模式与装饰器模式的实现装饰器模式的代码实现//创建一个接口public interface Shape { void draw();}//创建实现接口的实体类。public class Rectangle implements Shape { @Override public void draw() { System.out.println("Shape: Rectangle"); }}public class原创 2021-04-01 15:28:43 · 107 阅读 · 0 评论 -
Android中Fragment的基本使用
Fragment的使用一.首先创建Fragment文件创建Fragment对象时,可以通过newInstance方法实例化AFragment其中newInstance在实例化时内部通过setArguments进行传参数public class AFragment extends Fragment { public static AFragment newInstance(String title){ AFragment aFragment = new AFragme原创 2021-03-23 13:21:12 · 383 阅读 · 2 评论 -
Fragment的基本使用及使用中注意的点
Fragment基本使用方法fragment生命周期fragment依赖于Activityfragment通过getActivity()获取当前所在的Activityfragment通过FragmentManager的findFragmentById()或findFragmentByTag()获取fragmentfragment与activity多对多关系//第一步,实例化AFragment aFragment = new AFragment();//第二步,添加f原创 2020-08-17 14:09:50 · 166 阅读 · 0 评论 -
Android中获取进程名的方式
获取进程名一般一个App中有多个进程时,每个进程都有自己独立的Application,所以定义的Application中的onCreate方法会被重复调用,为了防止onCreate中的方法多次初始化,需要根据进程名判断是否针对当前进程进行初始化,获取进程名的方法如下:常规方法,通过ActivityManager获得 public static String getCurrentProcessNameByActivityManager(@NonNull Context context) {原创 2021-01-12 09:42:15 · 2208 阅读 · 0 评论 -
Android中Crash捕获实现
Crash捕获的实现首先实现CrashHandler类然后再实现一个Application,再在Application中初始化CrashHandler类在manifest文件中注册自定义的Application类需要实现读写文件的权限实现CrashHandler类/** * UncaughtException处理类,当程序发生Uncaught异常的时候,有该类来接管程序,并记录发送错误报告. * * @author user * */ public clas原创 2021-01-10 11:42:54 · 267 阅读 · 0 评论 -
Android常用颜色收集colors.xml
<?xml version="1.0" encoding="utf-8"?><resources> <color name="purple_200">#FFBB86FC</color> <color name="purple_500">#FF6200EE</color> <color name="purple_700">#FF3700B3</color> <color na原创 2020-12-28 13:25:03 · 2088 阅读 · 0 评论 -
ViewBinding使用详解
ViewBinding使用详解使用ViewBinding时需要先在build.gradle文件中声明 //老版本 viewBinding { enabled = true } //新版本 buildFeatures { viewBinding = true }生成绑定类时忽略某个布局文件,请将 tools:viewBindingIgnore="true" 属性添加到相应布局文件的根视图中:<LinearLa原创 2020-12-24 19:08:41 · 3810 阅读 · 1 评论 -
Jetpack中的Lifecycle使用详解
Jetpack中的Lifecycle详解Lifecycle解决了什么问题?并且允许其他观察者监听宿主的状态,帮助管理生命周期依赖包// ViewModel and LiveDataimplementation "android.arch.lifecycle:extensions:2.2.0"// alternatively, just ViewModelimplementation "android.arch.lifecycle:viewmodel:2.2.0"// alternativel原创 2020-12-24 17:06:53 · 392 阅读 · 1 评论 -
ViewPager中预加载与懒加载
ViewPager中预加载与懒加载预加载为了让用户在切换过程中不卡顿,安卓官方默认创建当前item时,会创建第二个item,确保用户滑动时第二个item已经被创建,保持viewpager的平滑移动的效果。所以实现了预加载。viewpager.setCurrentItem(int item)设置当前显示第几个itemviewpager.setOffscreenPageLimit(int limit)limit参数默认是1,即使设置为0的话,默认值也为1(非当前显示页面)默认是预加载当前显原创 2020-11-23 16:52:41 · 1034 阅读 · 0 评论 -
Android中导航栏的几种实现方式
ViewPager导航实现方式伪代码,需要自己根据情况实现ViewPager + TabLayout<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="m原创 2020-11-17 15:32:59 · 1225 阅读 · 0 评论 -
ViewPager中adapter基本使用总结
ViewPager的基本使用ViewPager和TabLayout的使用:https://developer.android.com/guide/navigation/navigation-swipe-viewPagerAdapter可实现针对View的广告栏滑动效果instantiateItem(ViewGroup, int)创建并添加子控件,实例化控件destroyItem(ViewGroup, int, Object)判断滑动的控件是否超出了缓存范围,如果超出则销毁,移除不原创 2020-11-17 00:12:36 · 898 阅读 · 0 评论 -
Android中weight的计算方式
假设:LinearLayout为android:orientation=“horizontal”,LinearLayout中包含三个控件layout_weight属性值分别为1、2、2第一种:每个控件的宽度属性都为android:layout_width=“0dp”,那么额外的空为(手机的宽度假设为X)X-0-0-0=X,那么根据sdk上所述:第一个控件的宽度为 0+(1/(1+2+2))*X=X/5第二个控件的宽度为 0+(2/(1+2+2))*X=2X/5第三个控件的宽度为 0+(2/原创 2020-09-15 22:30:06 · 726 阅读 · 0 评论 -
Dart环境变量配置
dart环境配置安装 chocolatey(一般安装这个需要翻墙)安装dart-sdkchoco install dart-sdk更新dart-sdkchoco upgrade dart-sdk国内需要修改镜像地址由于国内的不能直接访问,参照flutter中文网上面给的,直接在环境变量中对一下两个地址进行配置,直接在环境变量中添加key和value值export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_S原创 2020-08-24 15:23:48 · 963 阅读 · 0 评论