自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ScrollView嵌套EditText联带滑动的解决办法

解决ScrollView嵌套EditText的滑动事件,并且实现它们两者之间的联带滑动。什么是联带滑动呢,就是当EditText滑动到底部的时候,这时就应该让外部的ScrollView跟着滑动,好让它们之间完成连贯的滑动事件。先来看看效果把。网上没找到完整实现的例子,只好自己撸demo了。代码里有注视,全部代码如下:package chn.fz.thatjay.scrolleditview....

2019-09-08 17:24:04 1202

转载 Android APT

Android APT注解类型注解的处理运行时注解的处理编译时注解的处理javapoetAPT annotation processing tool 注解处理工具注解类型注解语法注解通过@interface关键字来定义@Retention(RetentionPolicy.CLASS)@Target({ElementType.FIELD, ElementType.TYPE})public @interface MyAnnotation {}Java中总共有5中元注解:@Retention

2021-07-25 15:58:00 1130

转载 android 实现返回键执行home键方法

手机返回键会销毁应用activity页面,再进入activity页面全部重新走生命周期,重新走代码流程。很多时候我们不一定想退到手机主页就销毁应用页面,仅仅想实现电脑端最小化应用程序的效果。实现返回键执行home键方法。public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { Intent intent = new Intent(Intent.

2021-07-18 11:03:41 2256

原创 Android 视频播放器

视频播放现在算是比较常见的需求了,Github 上也已经有很多很好的开源视频播放器了,比如 Google 家的 ExoPlayer 和 Bilibili 的 ijkplayer,但是对于开发者而言,选择当然是越多越好,所以今天给大家再推荐几个视频播放器。google/ExoPlayer star 18kBilibili 开源播放器bilibili/ijkplayer star 29.1kCarGuo/GSYVideoPlayer star 16.5k基于IJKPlayer(兼容系统Med

2021-07-18 10:52:46 1331 2

原创 StickyListHeaders

要实现下面这种效果,提供2个第三方库给大家。StickyListHeaders star 3.7ktimehop/sticky-headers-recyclerviewStickyListHeaders star 5.5kemilsjolander/StickyListHeaders这个库更热,扩展功能更牛

2021-07-17 19:43:57 132

转载 安卓通讯录功能

RecyclerView实现顶部悬浮、字母排序、过滤搜索最优雅的方式效果如下github地址 https://github.com/Poke-MMo/SortRecyclerviewList

2021-07-17 17:35:21 157

原创 点击小图放大至全屏预览

ZoomPreviewPicture本项目受Google官方demo Zooming a View 启发,实现了点击小图放大至全屏预览,退出全屏恢复至原来位置这两个过程的动画过渡。 常见应用场景如微信朋友圈照片九宫格和微信聊天图片,视频,gif预览,某些手机系统相册等viewpager图片查看 缩放 拖拽下拉缩小退出(效果同微信图片浏览)...

2021-07-17 16:57:22 248

转载 目前最流行的运行时权限请求框架

目前最流行的运行时权限请求框架PermissionsDispatcher、RxPermissions和easypermissions的对比Android6.0版本的一个重大改动就是增加了运行时权限(动态权限):一些危险的权限不单止要在AndroidMainifest文件声明,还要在运行的时候使用代码来申请,让用户同意才进行授权。由于Android自带的API使用起来(怎么使用就不写了,网上很多)比较麻烦,所以网上出现了一大堆简化这个过程的开源库,这里介绍目前最流行的三个开源库(GitHub上Star最多

2021-07-17 16:26:31 1022

转载 仿iOS的PickerView控件

介绍这是一款仿iOS的PickerView控件,有时间选择器和选项选择器,新版本的详细特性如下:——TimePickerView 时间选择器,支持年月日时分,年月日,年月,时分等格式。——OptionsPickerView 选项选择器,支持一,二,三级选项选择,并且可以设置是否联动 。支持三级联动设置是否联动设置循环模式支持自定义布局。支持item的分隔线设置。支持item间距设置。时间选择器支持起始和终止日期设定。支持“年,月,日,时,分,秒”,“省,市,区”等选项的单位(labe

2021-07-16 00:11:12 232

转载 AndroidStudio 代码报错(引入红色),但可正常运行解决方法(4种方式)

AndroidStudio 崩溃,异常,电脑蓝屏等情况下有时会引发代码报错,但又能正常编译。整理出了四种方法,供大家参考。一、自带清除缓存点击AndroidStudio菜单File -> Invalidate Caches/Restar… ,在弹出的对话框中点击Invalidate and Restar。等待AS清理并自动重启。二、删除user目录下.AndroidStudio中的文件关闭AndroidStudio,进入C:\Users\xUser.AndroidStudio3.1(3.

2021-07-16 00:00:11 1526

转载 BadgeRadioButton -- 带角标的RadioButton

一、概述本文使用上一篇文章 DrawCenterTextView 的一些知识,如果想要理解,请查看后再看本文在首页导航菜单栏中,大多数都会有角标表示消息的数量,在网上找了一下,有角标的要么无法实现点击事件,要么就是一个角标样式的 TextView,并没有一个简单的RadioButton的角标设置,决定自定义一个简单的 BadgeRadioButton ,目前仅支持 drawableTop 的按钮,实现的效果如下:二、实现原理在 onDraw 方法中,根据 DrawableTop 图标的位置,选择右

2021-07-15 23:50:05 290

转载 css占位符

  == 普通的英文半角空格  ==   ==   == no-break space (普通的英文半角空格但不换行)  == 中文全角空格 (一个中文宽度)  ==   == en空格 (半个中文宽度)  ==   == em空格 (一个中文宽度)  == 四分之一em空格 (四分之一中文宽度)相

2021-06-22 22:59:51 2112

转载 vue对比其他框架

这个页面无疑是最难编写的,但我们认为它也是非常重要的。或许你曾遇到了一些问题并且已经用其他的框架解决了。你来这里的目的是看看 Vue 是否有更好的解决方案。这也是我们在此想要回答的。客观来说,作为核心团队成员,显然我们会更偏爱 Vue,认为对于某些问题来讲用 Vue 解决会更好。如果没有这点信念,我们也就不会整天为此忙活了。但是在此,我们想尽可能地公平和准确地来描述一切。其他的框架也有显著的优点,例如 React 庞大的生态系统,或者像是 Knockout 对浏览器的支持覆盖到了 IE6。我们会尝试着把这

2021-06-05 12:43:05 651

转载 为什么 React 还是比 Vue 受欢迎?

根据《2019 年度JavaScript趋势报告》显示,目前React 在前端领域流行度最高, Vue 排名位居第二,但从“使用过并且将再次使用”的比例来看,Vue和React相比仍有不小差距。React之所以这么受欢迎,得益于它自身优势:灵活性和响应性:React提供最大的灵活性和响应能力。虚拟DOM:由于它基于文档对象模型,因此它允许浏览器友好地以HTML,XHTML或XML格式排列文档。可扩展性:由于其灵活的结构和可扩展性,React已被证明对大型应用程序更好。不断发展: React得

2021-06-05 12:27:41 1677

转载 AndroidStudio4.1不提示编码错误,运行时才会报错

AndroidStudio4.1不提示编码错误,运行时才会报错第一种情况在C:\Users\Administrator\AppData\Roaming\Google\AndroidStudio4.1目录下删除plugins文件,然后重启androidstudio第二种情况可能是androidstudio的省电模式被开启了,只需要把省点模式关掉即可,如图的 Power save Mode给取消选中就行了...

2021-05-31 23:19:45 140

转载 Kotlin系列之let、with、run、apply、also函数的使用

简述:相比Java, Kotlin提供了不少高级语法特性。对于一个Kotlin的初学者来说经常会写出一些不够优雅的代码。在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码。Standard.kt是Kotlin库的一部分,它定义了一些基本函数。 这个源代码文件虽然一共不到50行代码,但是这些函数功能都非常强大。一、回调函数的Kotin的lambda的简化在Kotlin中对Java中的一些的接口的回调做了一些优化,可以使用一个lambda

2021-05-14 00:10:37 348

转载 Kotlin 不再使用 findViewById 的原理探析

使用过 Kotlin 的都知道, Kotlin 一个非常棒的特性是:可以在 .kt 文件中直接使用控件的 ID 对控件进行操作。而 Java 代码中,需要像先式声明控件,再使用 findViewById() 来找到控件,然后才能操作该控件。该特性称为Static Layout Import,即静态布局引入。举个栗子,假设某个 activity 的 xml 文件: activity_main.xml 中有个 TextView 控件,其 ID 定为 tv_name ,在对应的 .kt 文件中将布局如下引入进来

2021-05-12 21:50:51 917

转载 2021年4月程序员工资统计,平均14596元。南京程序员收入挤进一线。

2021年4月全国招收程序员456577人。2021年4月全国程序员平均工资14596元,工资中位数12500元,其中96%的人的工资介于2500元到65000元。城市排名city平均工资最低工资中位数最高工资招聘人数百分比1北京1816652501600045000387429.36%2上海17470525016500441657583418.32%3深圳16943525015500450006438915.55%

2021-05-05 14:04:39 469

转载 LinearLayout 获取子元素,并分别给子元素赋值实现

java类实现对LinearLayout 里面所有没有标明id的TextView进行赋值LinearLayout thisNoLayout = findViewById(R.id.ly_this_no);//因为父控件中写的是五个TextView,所有这里的getChildCount也是五个String resultArray=new String[]{"a","b","c","d","e"};for (int i = 0; i < thisNoLayout.getChildCoun

2021-04-29 21:49:57 463

转载 访问者模式一篇就够了

访问者模式介绍最复杂的设计模式,并且使用频率不高,《设计模式》的作者评价为:大多情况下,你不需要使用访问者模式,但是一旦需要使用它时,那就真的需要使用了。访问者模式是一种将数据操作和数据结构分离的设计模式。(觉得太抽象,可以看下面的例子)。访问者模式的使用场景对象结构比较稳定,但经常需要在此对象结构上定义新的操作。需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作“污染”这些对象的类,也不希望在增加新操作时修改这些类。访问者模式的UML类图角色介绍Vis

2021-04-24 10:33:29 131

转载 Android 高版本API方法在低版本系统上的兼容性处理

下面这段代码在5.0手机上崩溃了注意代码 @RequiresApi(api = Build.VERSION_CODES.M)@RequiresApi(api = Build.VERSION_CODES.M)private static boolean isIgnoringBatteryOptimizations(Context context) { boolean isIgnoring = false; PowerManager powerManager = (PowerManage

2021-04-23 23:30:17 2080 1

转载 Android 获取视频第一帧

1.本地视频MediaMetadataRetriever media = new MediaMetadataRetriever();media.setDataSource(videoPath);// videoPath 本地视频的路径Bitmap bitmap = media.getFrameAtTime(1, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);ivAddPhoto.setImageBitmap(bitmap);2.网络视频//网络p

2021-04-16 21:29:18 879

转载 Fragment和Activity的区别

Activity是系统的四大组件之一,由activityManager管理,生命周期由系统控制。Fragment是在3.0后引入的组件,由FragmentManager管理,可以由Activity自由控制,引入或者删除,更方便。由于Fragment是Activity管理,所以在使用的时候,要格外注意,创建之前需要getFragmentByTag或者ById查看一下是否已经有存在的,FragmentManager也跟ActivityManager一样有一个缓存机制。同一个TAG的fragment如果多次.

2021-04-16 20:21:09 592

转载 android.support.v4.app.Fragment和android.app.Fragment区别

Fragment(碎片)是在3.0以后才出现的,Google为了兼容3.0以前的版本,使用了android.support.v4来兼容以前的SDK。不同点如下1.最低支持版本不同android.app.Fragment 兼容的最低版本是android:minSdkVersion=“11” 即3.0版android.support.v4.app.Fragment 兼容的最低版本是android:minSdkVersion=“4” 即1.6版2.需要导jar包fragment android.supp

2021-04-16 20:13:48 1860

转载 Android studio断点调试

你的APK如果已经运行在普通模式(非Debug)的情况下,你突然想Debug,而又不想重新运行浪费时间,该怎么办呢?点击Attach Debugger to Android Process或者像下面一样打开也是可以的

2021-04-02 23:40:40 115

转载 解决启动Android应用程序时出现白屏或者黑屏的问题

一般情况下,启动页面通常是全屏的,而且会用一张图片来展示用户打开应用程序后第一眼看到的界面。在手机中点击应用程序的图标到应用程序显示完MainActivity的视图这个过程中,通常会用一到两秒的时间。在默认activity的主题下(Light or Black),这两秒屏幕就会出现白屏(Light)或者黑屏(Black)- 实际上是activity默认的主题中的android:windowBackground为白色或者黑色导致的。通过设置主题来防止白屏或者黑屏1.设置android:windowBac

2021-04-02 20:18:45 1349

转载 Android 8.0 崩溃问题记录:Only fullscreen opaque activities can request

记录一下最近App在Android 8.0 版本发生闪退的一个问题。Caused by: java.lang.IllegalStateException:Only fullscreen opaque activities can request orientation1.起因为了解决app启动页白屏或者黑屏,把启动页Activity设置为全透明的风格:<item name="android:windowIsTranslucent">true</item>于是,悲剧发

2021-04-02 20:10:01 292

转载 GlideApp无法生成问题解决

1、sdk build版本必须为>=27,必须保证所有的support 的版本为相同并且为27.1.0compile 'com.android.support:support-v4:27.1.0'compile 'com.android.support:recyclerview-v7:27.1.0'2、我用的是Glide版本是4.7.1implementation 'com.github.bumptech.glide:glide:4.7.1'annotationProcessor 'co

2021-03-28 22:24:35 687

转载 Android 从任何地方得到Application context

本篇文章介绍如何得到Application context。一般来说,我们有以下方法,1. 继承Application类我们知道,Application类是唯一的,我们可以继承该类,并将context保存在内部,然后在需要的时候,返回就可以了。代码如下,public class MyApplication extends Application { private static Context context; public void onCreate() { supe

2021-03-27 11:51:44 567

转载 uni-app实现再次返回退出应用时不退出应用而是在后台运行

如果APP需要后台驻留,用户返回到首页时会提示退出操作,我们可以不退出而是隐藏至后台,这样的话APP就会在后台运行,以下代码须写在main.js里面,弹出的内容可自定义设置。let main = plus.android.runtimeMainActivity();//为了防止快速点按返回键导致程序退出重写quit方法改为隐藏至后台 plus.runtime.quit = function() { main.moveTaskToBack(false);};//重写toast方法如果内容为

2021-03-23 22:15:46 1925

原创 android studio快速查找xml文件

1.Activity 或者 Fragment类及其相关的布局文件快速搜索1.在Activity 或者 Fragment类,可以看到类名左侧有个按钮,点击就会把类里面所有相关的布局layout文件全部下拉展示出来,点击可以直接跳转过去,不用一行一行找到代码跳,非常方便2.对应布局文件左侧也有个按钮,可以跳转回到对应的在Activity 或者 Fragment类2.所有的xml布局文件快速搜索引用地方参考在Androidstudio中查找XML文件使用的快捷方式是什么android st

2021-03-20 20:24:07 3221

原创 记录一次androidx项目迁移

1.Android Studio提供了一个一键迁移的功能只需要对着你的项目名右击 → Refactor → Migrate to AndroidX,就会弹出如下图所示的窗口。这里点击Migrate,Android Studio就会自动检查你项目中所有使用Android Support Library的地方,并将它们全部改成AndroidX中对应的库。另外Android Studio还会将你原来的项目备份成一个zip文件,这样即使迁移之后的代码出现了问题你还可以随时还原回之前的代码。几乎没动代码就直

2021-03-14 14:29:40 336

转载 com.android.support版本冲突的解决办法

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes当我们使用android studio添加一些第三方的依赖库时,很可能会提示上面这个错误。大致意思就是com.android.support的包版本号要保持一致,但是可能我们自己新建的项目的com.android.support包版本号要高一些,一些第三方.

2021-03-14 12:17:58 157

原创 android 删除sqlite数据库

删除自己应用下的所有db数据库文件,代码如下:String[] arr = context.databaseList();for (int i = 0; i < arr.length; i++) { context.deleteDatabase(arr[i]);}具体api介绍根据创建的db数据库名称,删除db数据库文件android.content.Context.deleteDatabase(String name);/** * Delete an existing

2021-03-13 11:41:09 2159

转载 带你全面了解 Flutter,它好在哪里?它的坑在哪里? 应该怎么学?

对于 Flutter 我没有太多的发言权,不过GSY是对 Flutter 充分理解并精深掌握的前辈了,所以转一篇他对 Flutter 的一些解答文给大家,如果你有相似的疑问,希望对你有用。回顾了这段时间解答关于 Flutter 的各种问题后,我突然发现很多刚刚接触 Flutter 的萌新,对于 Flutter 都有着不同程度的误解,而每次重复的解释又十分浪费时间,最终我还是决定写篇文章来做个总结。Flutter 的起源Flutter 的诞生其实比较有意思,Flutter 诞生于 Chrome 团队的一

2021-03-13 00:41:27 268

转载 Android 完全退出自己应用

1.在Activity执行下面代码,来退出当前应用程序finish();android.os.Process.killProcess(android.os.Process.myPid());System.exit(0);2.根据进程名称杀进程android.os.Process.killProcess(android.os.Process.myPid());3.用 java api 退出当前线程System.exit(0);参考:android 几种杀进程的方式...

2021-03-08 23:57:18 1169

转载 Unable to resolve dependency for ‘app@externalNativeBuild/compileClasspath‘: Could not resolve :XXX

1. ndk传统方式,,,主工程build.grale文件一改动代码,同步项目,所有的module工程立刻全部报下面这个错,必须rebuild project工程才能正常运行,实在是影响开发。Unable to resolve dependency for 'app@externalNativeBuild/compileClasspath': Could not resolve :XXX主工程配置如下:android { compileSdkVersion 27 default

2021-03-08 23:49:10 233

原创 android studio 如何在build.gradle中添加宏定义

ndk CMake和传统方式详见点击这里1.ndk由CMake方式创建,通过下面写法添加宏定义android { buildTypes { debug { externalNativeBuild{ cmake { cppFlags "-DRELEASE_MODE=1" //debug或release包定义RELEASE_MODE=1宏,供so库中的ifdef语句使用

2021-03-08 23:32:25 1754 1

转载 android JNI中的log打印

1.导入 #include <android/log.h>2.在Android.mk 中加上LOCAL_LDLIBS :=-llog注意:传统方式需要这步,如果是CMake不需要这步,这部分资料详见注意Android.mk里有一行include $(CLEAR_VARS)必须把LOCAL_LDLIBS :=-llog放在它后面才有用,否则相当于没写。LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE

2021-03-08 20:58:12 673

转载 Android 实战JNI之“hello world”

通过CMake工具demo演示流CMake安装新建项目,选择Native C++项目在Android Studio 完成新项目的创建后,请从IDE左侧打开Project 矿口并选择Android 视图。如下图所示,Android Studio 将添加cpp和External Build Files 组:直接运行项目我们来直接 run一下这个项目,看下结果#include <jni.h>#include <string>extern "C" JNIEXPORT

2021-03-07 23:52:39 450

空空如也

空空如也

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

TA关注的人

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