Crystal_xing的专栏

私信 关注
Crystal_xing
码龄7年

温不增华,寒不改叶

  • 344,665
    被访问量
  • 228
    原创文章
  • 13,911
    作者排名
  • 31
    粉丝数量
  • 于 2014-07-19 加入CSDN
获得成就
  • 获得59次点赞
  • 内容获得66次评论
  • 获得116次收藏
荣誉勋章
兴趣领域
  • #Android
    #Kotlin#Android Studio
TA的专栏
  • android
    259篇
  • Retrofit
    1篇
  • Rxjava
    1篇
  • kotlin
    23篇
  • View控件
    22篇
  • Flutter
    23篇
  • API
    1篇
  • Demo合集
    4篇
  • Android Firebase
    12篇
  • charles
    1篇
  • UI效果
    8篇
  • 图片选择
    2篇
  • Touch多点触控
    2篇
  • file
    2篇
  • adb命令
    1篇
  • Realm
    1篇
  • git
    4篇
  • Glide
    1篇
  • Leaks
    1篇
  • Android   MVP架构
    6篇
  • IOS
    19篇
  • 软件开发(泛型)
    1篇
  • hadoop
    5篇
  • JAVASE
    13篇
  • bug
    32篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

FCMTestDemo.zip

FCM Demo
zip
发布资源于 8 天前

Firebase Auth 获取token secret

官方文档:https://firebase.google.com/docs/auth/android/twitter-login官方文档这段描述过于模糊,直接getAccessToken(), getSecret(),是点(.)不出来的,需要把AuthResult的AuthCredential对象强转成OAuthCredential, 然后再取得: /** * Firebase Twiter 认证 * * @param context ...
原创
21阅读
1评论
0点赞
发布博客于 9 天前

[GetAuthDomainTask] Error getting project config. Failed with { XXX “message“: “INVALID_CERT_HASH

完整日志如下:2021-02-10 14:39:25.954 28918-30756/jp.or.eiken.studygear E/FirebaseAuth: [GetAuthDomainTask] Error getting project config. Failed with { "error": { "code": 400, "message": "INVALID_CERT_HASH", "errors": [
原创
22阅读
0评论
0点赞
发布博客于 17 天前

Firebase - Apple Auth 认证登陆心得

官方文档:https://firebase.google.com/docs/auth/android/apple?authuser=2。官方文档的流程已经很清晰的描述了过程,挑一些需要注意的地方补充记录下来:1.苹果ID需要启用了双重身份验证 (2FA) 。双重验证:您的密码和六位数的验证码,这些信息会自动显示在您信任的设备上或发送到您的电话号码。通过输入代码,您正在验证您对新设备的信任参考: https://support.apple.com/en-us/HT204915...
原创
27阅读
1评论
0点赞
发布博客于 18 天前

Firebase - Twitter三方登陆认证集成心得

官方文档:https://firebase.google.cn/docs/auth/android/twitter-login?hl=zh-cn1.首先根据文档,需要在Firebase控制台创建项目,按照提示填写生成后将google-services文件引入项目,确保FIrebase控制台上设置好sha1证书签名:(获取sha1的命令:keytool -list -v -keystore ~/.android/debug.keystore,密码是android)2. 打开Twitter开发.
原创
41阅读
1评论
0点赞
发布博客于 26 天前

Failed resolution of: Landroidx/browser/customtabs/CustomTabsIntent$Builder;

使用Firebase Auth 认证的时候出现如下错误:1612145598.686 21721-21721/com.change.demox E/om.change.demo: Invalid ID 0x00000000.1612145621.043 21721-21721/com.change.demox E/AndroidRuntime: FATAL EXCEPTION: main Process: com.change.demox, PID: 21721 java.lang.
原创
56阅读
0评论
0点赞
发布博客于 26 天前

Mac 手动安装 Gradle

https://www.jianshu.com/p/c7925c564a25
转载
9阅读
0评论
0点赞
发布博客于 1 月前

Android:emulator: ERROR: Can‘t find ‘Linux version ‘ string in kernel image file: /Users/admin/Libr

12:24 PM Emulator: emulator: ERROR: Can't find 'Linux version ' string in kernel image file: /Users/admin/Library/Android/sdk/system-images/android-30/google_apis/x86//kernel-ranchu-6412:24 PM Emulator: Process finished with exit code 1步骤:Tools > S.
原创
19阅读
0评论
0点赞
发布博客于 1 月前

Android: Gradle project sync failed. Please fix your project and try again

出现这种情况,重启项目让Gradle重新编译,多半能解决
原创
19阅读
0评论
0点赞
发布博客于 1 月前

kotlin: Unable to create call adapter for io.reactivex.Observable<

Process: com.change.demox, PID: 20498 java.lang.IllegalArgumentException: Unable to create call adapter for io.reactivex.Observable<com.change.demox.views.banner.component.HomeBean> for method RetrofitService.getFirstHomeData at..
原创
15阅读
0评论
0点赞
发布博客于 1 月前

flutter: 一次返回多个界面之前的界面

如果从A画面打开B画面,然后开启C,D,E。。M等等画面,最后在M画面想直接返回到A画面,那么如下处理:想要返回的画面,在跳转加载的时候先RouteSettings里的name属性命个名: Navigator.of(context).pushReplacement<MaterialPageRoute, MaterialPageRoute>(MaterialPageRoute( settings: RouteSettings(nam
原创
64阅读
0评论
0点赞
发布博客于 1 月前

flutter: 软键盘弹出把布局向上顶起的问题

软键盘向上弹出的时候,会使界面高度重新计算然后刷新布局,所以导致布局向上顶起的现象,解决方案如下:1. Scaffold 中需要加入resizeToAvoidBottomPadding: false ,2. body 部分用SafeArea+SingleChildScrollView+SizeBox包裹,然后设置高度,用来规避重新计算的问题: @override Widget build(BuildContext context) { final paddin...
原创
455阅读
0评论
0点赞
发布博客于 2 月前

flutter:incomplete input (code 1 SQLITE_ERROR): , while compiling: CREATE TABLE

incomplete input (code 1 SQLITE_ERROR): , while compiling: CREATE TABLE tableWeight ( _id INTEGER PRIMARY KEY, weightYear INTEGER, weightMonth INTEGER, weightDay INTEGER, weightValue INTEGER.
原创
141阅读
0评论
0点赞
发布博客于 2 月前

flutter: Locale data has not been initialized, call initializeDateFormatting(<locale>).

var formatter = DateFormat('yyyy年MMMd日', 'ja_JP');当使用DateFormat报这个错,如果 intl包引入了还是没解决,原因多半是在app的位置没有配置,加上就行: @override Widget build(BuildContext context) { //返回一个Material风格的组件 return MaterialApp( title: 'Flutter Demo',//配置如下两行 ..
原创
91阅读
0评论
1点赞
发布博客于 2 月前

Flutter: List去重

利用List提供的toSet()去重,再转回List: calculatedRectList = calculatedRectList.toSet().toList();
原创
64阅读
0评论
0点赞
发布博客于 2 月前

flutter: A value of type ‘dynamic‘ can‘t be assigned to a variable of type ‘int‘.

错误的提示是产生了从 dynamic到 int的不正确的隐式转换,隐式转换失败了。解决方案是在报错的位置人为进行强转: active = map[columnActive];//修改为: active = map[columnActive] as int ;
原创
286阅读
0评论
0点赞
发布博客于 2 月前

Flutter: 在界面绘制的过程(build)中获取指定widget的大小

使用WidgetsBinding提供的addPostFrameCallback回调。 @override Widget build(BuildContext context) { var widgetsBinding = WidgetsBinding.instance; widgetsBinding.addPostFrameCallback((callback) { setState(() { if (context.size != null) {...
原创
77阅读
0评论
0点赞
发布博客于 3 月前

flutter: This likely happens because you used a `BuildContext` that does not include the providerXXX

Error: Could not find the correct Provider<FeelCalendarViewModel> above this MonthView WidgetThis likely happens because you used a `BuildContext` that does not include the providerof your choice. There are a few common scenarios:- The provider.
原创
415阅读
0评论
0点赞
发布博客于 3 月前

flutter: setState() or markNeedsBuild() called during build.

日志如下:════════ Exception caught by widgets library ═══════════════════════════════════════════════════════setState() or markNeedsBuild() called during build.The relevant error-causing widget was: ReusableSceneType file:///Users/admin/Documents/pr...
原创
36阅读
0评论
0点赞
发布博客于 3 月前

flutter: IconButton取消点击的默认效果

splashColor: Colors.transparent,highlightColor: Colors.transparent,
原创
156阅读
0评论
0点赞
发布博客于 3 月前

flutter: Horizontal viewport was given unbounded height.

════════ Exception caught by rendering library ═════════════════════════════════════════════════════Horizontal viewport was given unbounded height.The relevant error-causing widget was: PageView file:///Users/admin/Documents/project/GitlabFlutter/Fli.
原创
75阅读
0评论
0点赞
发布博客于 3 月前

flutterText 文字下有黄色下划线

https://www.jianshu.com/p/1f0a29cddba1解决方式采用根节点为脚手架Scaffold组件Scaffold(body: content,);
转载
100阅读
0评论
0点赞
发布博客于 3 月前

flutter: Horizontal viewport was given unbounded height.

════════ Exception caught by rendering library ═════════════════════════════════════════════════════Horizontal viewport was given unbounded height.The relevant error-causing widget was: PageView file:///Users/admin/Documents/project/GitlabFlutter/Fli.
原创
49阅读
0评论
0点赞
发布博客于 3 月前

flutter:RenderFlex children have non-zero flex but incoming width constraints are unbounded.

错误日志如下:════════ Exception caught by rendering library ═════════════════════════════════════════════════════RenderFlex children have non-zero flex but incoming width constraints are unbounded.The relevant error-causing widget was: Row file:///Users.
原创
314阅读
0评论
0点赞
发布博客于 3 月前

flutter:A RenderFlex overflowed by 242 pixels on the right

如果父 flex row column 的话,那么抛出此错误的元素使用Expanded或者Flexible 包裹就行,如下@overrideWidget build(BuildContext context) { return new Card( color: Colors.white, elevation: 3.0, child: new Padding( padding: new EdgeInsets.all(15.0),...
转载
95阅读
0评论
0点赞
发布博客于 3 月前

Flutter: 千位数加逗号分隔

用NumberFormat直接1行代码:import "package:intl/intl.dart"; var stepCount = 10000002; String getFormatStepCount() { var format = NumberFormat('0,000'); return format.format(stepCount); }
原创
222阅读
0评论
0点赞
发布博客于 3 月前

flutter: You used a `BuildContext` that is an ancestor of the provider you are trying to read

当在StatefulWidget中使用ChangeNotifierProvider绑定ViewModel,就会报如上错误,完整的错误日志如下Error: Could not find the correct Provider<RecordTopViewModel> above this RecordTop WidgetThis likely happens because you used a `BuildContext` that does not include the p..
原创
301阅读
0评论
0点赞
发布博客于 4 月前

error: The argument type ‘Function‘ can‘t be assigned to the parameter type ‘void Function()‘.

出错的代码如下:解决方案:声明部分的写法改为:final void Function() onTap;
原创
689阅读
0评论
0点赞
发布博客于 4 月前

Flutter : 安装环境总结

官网的说明:https://flutterchina.club/setup-macos/但是个人感觉有点别扭,记录下自己的环境安装流程1. AndroidStudio->preferences->Plugins, 搜索到Flutter插件点击安装,然后重启IDE2. 打开终端,输入:export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://stor...
原创
25阅读
0评论
0点赞
发布博客于 4 月前

java.net.UnknownServiceException: CLEARTEXT communication to XX not permitted by network security

https://blog.csdn.net/qq_37684824/article/details/89681392原因;翻译过来就是安卓9加强了保密性,导致无法进行非加密的http网络请求。
转载
24阅读
0评论
0点赞
发布博客于 4 月前

Android:bottomSheet效果的下拉拖拽功能总结

效果如动图所示,Android中要对布局中的控件进行自由拖动,一般有两种实现方法:方法1:重写父类点击事件的方法, 对触摸事件进行处理。方法2: 利用ViewDragHelper接管触摸操作来处理触摸事件。 gif图所用的便是方法2。ViewDragHelper提供的callback(ViewDragHelper.Callback)针对 ViewGroup 中的拖拽和重新定位 views 操作时提供了一系列非常有用的方法。下面贴出Demo的核心代码:布局:...
原创
80阅读
0评论
0点赞
发布博客于 4 月前

Android:This usually happens when two views of different type have the same id in the same hierarchy

这个崩溃于旋转屏幕的时候,从纵向布局切换到横向布局的时候发生:java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class android.os.Bundle instead. This usually happens when two views of different type have the same id in the same hierarchy. This .
原创
78阅读
0评论
0点赞
发布博客于 4 月前

Android: ViewModel> has no zero argument constructor

viewModel = ViewModelProvider( this, ViewModelProvider.AndroidViewModelFactory.getInstance(application) ).get(PDFBookDocumentViewModel::class.java)使用上述方法加载viewModel报上述错误。如果您想为ViewModel类提供一个非零参数的构造函数,则可能必须创...
原创
381阅读
0评论
0点赞
发布博客于 5 月前

Android:自定义layout 无法显示

布局代码引入自定义layout如下所示: <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/textview_description" android:orientation="vertical"> <com.change.de
原创
160阅读
0评论
0点赞
发布博客于 5 月前

Android: 代码中动态写clearFocus()无效的解决方案

目的是为了清除TextView的焦点,单纯clearFocus的话是没有效果的,首先在TextView的父布局上设置: android:focusable="true" android:focusableInTouchMode="true" <RelativeLayout android:id="@+id/relativelayout_contact_name" android:layout_...
原创
78阅读
0评论
0点赞
发布博客于 5 月前

Android: RecyclerView item被抢夺焦点

参考:https://blog.csdn.net/wolfking0608/article/details/86539681简单来说:item布局加上requestFocus <TextView android:id="@+id/contact_name" android:layout_width="match_parent" android:layout_height="wrap_con..
原创
103阅读
0评论
0点赞
发布博客于 5 月前

Android: Canvas drawText()设置marginleft ,字体center_vertical的方法

val start = context.resources.getDimensionPixelOffset(R.dimen.contact_wireless_title_margin_start) paint?.getTextBounds(title,0, title.length, rectOver) //需要margin左边多少,就+多少的start值 val titleX = left.toFloat() + start //字体垂直居中.
原创
76阅读
0评论
0点赞
发布博客于 5 月前

Android: getItemOffsets设置outRect边距后,每次切换回画面边距增大的问题

override fun getItemOffsets( outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State ) { super.getItemOffsets(outRect, view, parent, state) outRect.set(0, headHeight, 0, 0) } ...
原创
117阅读
0评论
0点赞
发布博客于 5 月前

Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

在Json转换的时候遇到这个错,说明是Json的格式不对,Gson期望你的JSON字符串以大括号开头: {,但是实际上传递给它的字符串是以引号开头。报错的字符串:noanswerhistory_get_rslt:{"res":0,""sq":12345,"history":[{"id":11,"num":"","group":0,"time":"20190531235959"},{"id":92,"num":"","group":0,"time":"201905011200...
原创
115阅读
0评论
0点赞
发布博客于 5 月前

Android: 设置Spinner的下拉高度

原生Spinner只提供了dropDownWidth属性设置下拉布局的宽度,却没有dropDownHeight这种高度属性的设置。找到了好用的解决方案:https://stackoverflow.com/questions/20597584/how-to-limit-the-height-of-spinner-drop-down-view-in-android,用反射的方式找到原生Spinner内部封装的下拉popupWindow,然后设置高度:Java版本: Spinner sp...
原创
687阅读
1评论
1点赞
发布博客于 5 月前

Android : getDimension, getDimensionPixelSize, getDimensionPixelOffset

Android 没能提供直接获取dimen.xml文件中某个值的方法,调用上述的三个方法得到的值,其实是经过乘以屏幕密度的,是value*density(屏幕密度)的像素值(pixel value),所以取得的值需要再经过一步转化,才能得到写在xml文件中的目标dp。 像素值转换的方法很多,从网上随便即可找到: /** * 将px值转换为dip或dp值,保证尺寸大小不变 * @param context * @param...
原创
44阅读
1评论
0点赞
发布博客于 5 月前

Android: Sketch学习随记--导出HTML文件方法

https://www.jianshu.com/p/d9f14d933bf1
转载
140阅读
0评论
0点赞
发布博客于 6 月前

离线安装android studio之---离线配置gradle(附gradle下载地址)

安装android studio后无法联网进行gradle下载,只能寻找离线手动配置gradle的方法,踩过不少坑后,最终通过以下几步解决:1. 下载与自己安装的android studio版本 匹配的gradleGradle下载地址:https://services.gradle.org/distributions/我用的是android studio2.3.3 ,所以下载的是 gradle-3.3-all.zipandroid studio3.0 可以下载 gradle-4.1-a.
转载
498阅读
1评论
0点赞
发布博客于 6 月前

Android : Can‘t locate AnyEvent.pm in @INC (you may need to install the AnyEvent module)

错误日志的具体版本如下,意思是在运行N700Smon这个可执行文件的时候,电脑中perl库里没有AnyEvent.pm这个文件,解决方案就是去网上下载并安装这个文件:xingjunaodeMini:n700Smon admin$ ./N700Smon Can't locate AnyEvent.pm in @INC (you may need to install the AnyEvent module) (@INC contains: . /Library/Perl/5.18/darw...
原创
181阅读
0评论
1点赞
发布博客于 6 月前

Android: 选择更换头像(UCrop)

此开源库github的项目地址:https://github.com/Yalantis/uCrop,使用很方便,根据这个库将核心功能提取封装了一个Demo,效果如上动图所示,根据自己的需求改变裁剪画面UI的话,改变Options就可以了,集成方式在github仓库里写的很清楚,没有特别需要注意的地方,Demo中的效果的option配置代码如下: val options = UCrop.Options() ////设置裁剪UI的页面信息 options.setCir...
原创
42阅读
0评论
0点赞
发布博客于 6 月前

Aandroid: 动态切换主题色

效果如动图所示,点击按钮动态切换主题色。核心代码只有一行:activity.setTheme(想切换的主题style),结合生命周期重绘渲染设置主题。 1. 点击按钮变量存储切换状态: override fun onClick(v: View?) { when (v?.id) { R.id.btn_theme1 -> { //主题绿色 preferences....
原创
169阅读
0评论
0点赞
发布博客于 6 月前

Android动态设置ViewPager是否可手指滑动

转载:https://blog.csdn.net/qq_33490141/article/details/82216285重写onTouchEvent和onInterceptTouchEvent即可.注意:这段代码并不是取消了滑动效果,只是拦截了滑动事件,不允许手指滑动,通过setCurrentItem切换时依旧有滑动的动画效果。/** * 自定义ViewPager,可动态设置是否支持滑动 * Created by monty on 2017/8/27. */public cla.
转载
37阅读
0评论
0点赞
发布博客于 6 月前

Android: 水波纹效果无效(自定义View重写onTouchEvent导致)

解决方案:onTouchEvent回调添加super方法override fun onTouchEvent(event: MotionEvent): Boolean { //XXXXXX 处理逻辑 super.onTouchEvent(event) return true }
原创
95阅读
0评论
0点赞
发布博客于 6 月前

Android Parameter ‘directory‘ is not a directory

解决方案:删除.gradle 和 build文件夹,重新make project
原创
455阅读
0评论
0点赞
发布博客于 7 月前

Android 多点触控抬起手指,onTouchEvent监听不到MotionEvent.ACTION_UP

解决方案: 在onTouchEvent的每个事件打上日志,发现监听不到MotionEvent.ACTION_UP的情况下,却监听到了MotionEvent.ACTION_CANCEL,所以让监听到MotionEvent.ACTION_CANCEL的时候,同样执行Up的操作即可。 MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { //持ち上げる i...
原创
204阅读
0评论
0点赞
发布博客于 7 月前

Android “2019-09-11T00:00:00+09:00“格式时间转换

/** * 時間変換 * * @param timeString start_date (2019-09-13T20:30:05.214+09:00) * @param format * @return result time */ fun timeFormat(timeString: String?, format: String?): String { val sdf = SimpleDateFormat("yyy..
原创
82阅读
0评论
0点赞
发布博客于 7 月前

Android 将每三个数字加上逗号处理(通常使用金额方面的编辑)

/** * 将每三个数字加上逗号处理(通常使用金额方面的编辑) * * @param str 需要处理的字符串 * @return 处理完之后的字符串 */ public static String addComma(String str) { DecimalFormat decimalFormat = new DecimalFormat(",###"); return decimalFormat.format(Dou...
转载
148阅读
0评论
0点赞
发布博客于 7 月前

Android 渐变drawable背景

原文链接:https://www.jianshu.com/p/ec1554c836c3核心代码:<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="0" android:endColor="@android:color/white" androi.
转载
81阅读
0评论
0点赞
发布博客于 7 月前

Android: DialogFragment设置固定大小

直接在xml中设置固定大小是不好使的,在onCreateView代码设置固定大小也不好使,正确的做法是在onCreateView之后的回调里,用代码设置大小的值: override fun onStart() { super.onStart() val window = dialog?.window if (window != null) { val params = window.attributes ...
原创
153阅读
0评论
0点赞
发布博客于 7 月前

Android: Intent.ACTION_SEND分享文件

/** * 共有file * */ private fun toShare(file: File) { val builder = VmPolicy.Builder() StrictMode.setVmPolicy(builder.build()) var intent = Intent(Intent.ACTION_SEND) //二进制的方式传输 intent.type = "app...
原创
259阅读
0评论
0点赞
发布博客于 7 月前

Android file:///storage/emulated/0/XX exposed beyond app through ClipData.Item.getUri()

android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.kubota.kpad/files/log.zip exposed beyond app through ClipData.Item.getUri() at android.os.StrictMode.onFileUriExposed(StrictMode.java:1996) at android.net.Uri..
原创
2706阅读
0评论
0点赞
发布博客于 7 月前

Android 根据文件后缀名获得对应的MIME类型

/** * 根据文件后缀名获得对应的MIME类型。 * @param filePath */ fun getMimeType(filePath: String?): String? { val mmr = MediaMetadataRetriever() var mime: String? = "text/plain" if (filePath != null) { mime = try ...
原创
271阅读
3评论
0点赞
发布博客于 7 月前

Android 转换ISO8601格式时间字符串

/** * 時間変換 * * @param timeString start_date (2019-09-13T20:30:05.214+09:00) * @param format * @return result time */ fun timeFormat(timeString: String?, format: String?): String { var formatNew = format?.repla...
原创
182阅读
0评论
0点赞
发布博客于 7 月前

Android RecyclerView控件列表项布局match_parent属性失效

onCreateView 里match parent失效的写法 View.inflate( context, R.layout.item_part_bottomsheet, null )好用写法: LayoutInflater.from(parent.context) .inflate(R.layout.item_parts_det..
原创
97阅读
0评论
0点赞
发布博客于 7 月前

Android kotlin:json自动生成bean

1. 取得json字符串{ "memo_id": 351, "items": [{ "language": "en", "title": "pdf image test", "content": "pdf再アップ10/23", "file_id": 30, "file_name": "pdf画像テスト.pdf", "file_size": 9088 }, { "language": "en", "title": "pdf image...
原创
298阅读
0评论
0点赞
发布博客于 7 月前

Android 手动释放viewpager中的所有fragment

adapter的源码如下,destroyItem回调经过处理,滑动的时候不销毁,viewpager所在界面销毁的时候才让super执行:class FigViewPagerAdapter( fm: FragmentManager?, fragments: List<Fragment>, mtitles: Array<String?>? = null) : FragmentStatePagerAdapter(fm!!) { var mFragm.
原创
258阅读
0评论
0点赞
发布博客于 7 月前

Android tint属性无效,不改变颜色

注意是否在vector里设置了android:fillType="evenOdd",有的话把它删掉有问题的代码:<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="12dp" android:height="11dp" android:viewportWidth="12" android:viewportHeight="11"> ...
原创
381阅读
0评论
0点赞
发布博客于 7 月前

RecyclerView 复用item错误positon错乱的解决方法【完美解决】

@Override public int getItemViewType(int position) { return position; }getItemViewType 适配器里面的这个方法返回改为position把 return super.getItemViewType(position);改为return position;其实这个返回的算是一个标识,这个标识我们来定义了,而不是用它们生成的方式。————————...
转载
264阅读
0评论
0点赞
发布博客于 8 月前

Android ViewModel 共享获取数据为null

出现这种情况,要去ViewModelProvider类--->get方法去打断点,看看ViewModel viewModel = mViewModelStore.get(key)这条语句的返回值,是否成功查出已有的viewModel,如果没查出的话会走create方法,创建一个新的viewModel,所以就为null了。 /** * Returns an existing ViewModel or creates a new one in the scope...
原创
307阅读
0评论
0点赞
发布博客于 8 月前

Android style中增加自定义属性

1. res->value文件夹中添加attr.xml ,写如下自定义属性,名字任意<resources> <declare-styleable name="MyView"> <attr name="buttonPressedColor" format="color" /> </declare-styleable></resources>2. style中添加:<style na..
原创
195阅读
0评论
0点赞
发布博客于 8 月前

Android Webview加载在线html显示为空

解决方案:dataBinding.webviewDisclaimer.settings.domStorageEnabled = true
原创
83阅读
0评论
0点赞
发布博客于 8 月前

Android Realm: Cannot modify managed objects outside of a write transaction.

java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction. at io.realm.internal.Table.throwImmutable(Table.java:653) at io.realm.internal.Table.checkImmutable(Table.java:522) at io.realm.interna..
原创
415阅读
0评论
0点赞
发布博客于 8 月前

Android Navigation: XXXDirections类不能自动生成

app的build文件夹中,不能生成XXXDirections类出现这个情况,检查build.gradle(app)中是否引入:apply plugin: "androidx.navigation.safeargs.kotlin"引入之后:成功生成。
原创
246阅读
0评论
0点赞
发布博客于 9 月前

Android ViewPager的嵌套+Recycler的滑动联动效果

ViewPager的嵌套+Recycler的滑动联动效果封装,左右滑动的时候会切换到此页画面的下一张图片(翻页的时候与小图Recyclerview列表保持联动),若滑动到最后一张图片之后,再次滑动会迁移到下一个图片画面去显示,效果图如下:将内部简单的ViewPager+Recycler的滑动联动一并抽出封装在Demo中,效果图如下:Demo地址:https://github.com/crystalyf/ViewPagerMatchRecyclerView...
原创
164阅读
0评论
0点赞
发布博客于 9 月前

在github的简介readme中添加演示gif,附带gif制作工具

转载地址:https://blog.csdn.net/rollingpin/article/details/81214073
转载
84阅读
0评论
0点赞
发布博客于 9 月前

Android 横竖屏切换布局

拿Fragment记录,在OnCreateView中: int orientation = getResources().getConfiguration().orientation; int layout = 0; if (orientation == Configuration.ORIENTATION_PORTRAIT) { layout = R.layout.fragment_image; } e.
原创
126阅读
0评论
0点赞
发布博客于 9 月前

Android frameLayout设置高度match parent

frameLayout在xml中高度设置match parent是无效的,必须要在代码中进行动态设置,代码的方式获取高度然后set: fl_child = view.findViewById(R.id.fl_child); Resources resources = this.getResources(); int childViewHeight = resources.getDisplayMetrics().heightPixels; fl_ch.
原创
430阅读
0评论
0点赞
发布博客于 9 月前

Android Glide: IOException(Cleartext HTTP traffic to img1.imgtn.bdimg.com not permitted)

2020-05-13 18:23:08.386 10297-10297/com.change.pdfscrolltrumbnail D/Wain: 加载失败 errorMsg:Failed to load resource There were 2 causes: java.io.IOException(Cleartext HTTP traffic to img1.imgtn.bdimg.com not permitted) java.io.FileNotFoundExceptio.
原创
158阅读
0评论
0点赞
发布博客于 9 月前

Mac GitBook 的安装与使用

1、https://nodejs.org/en/,下载nodeJs,安装成功之后输入node -v,显示node.js版本代表安装成功。2、打开终端输入如下命令安装gitbook, 等待安装完成,在终端输入gitbook -V之后即可查看当前Gitbook版本,代表安装成功。需要注意的是“V”一定要大写。会显示如下画面:sudo npm install gitbook-cli -g3、cd 命令进入MarkDown文件夹,用gitbook -serve命令生成HTML...
原创
223阅读
0评论
0点赞
发布博客于 9 月前

Android:UnsatisfiedLinkError: dalvik.system.[DexPathListXXXlib/arm64, /system/lib64]couldn't find so

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.toshiba.pocketsphinx-VPrA29DXIucRRuO4G...
原创
142阅读
0评论
0点赞
发布博客于 10 月前

Android:NullPointerException XXX..ndk.DefaultNdkInfo.findTargetPlatformVersionOrLower

日志如下图:org.gradle.initialization.ReportedException: org.gradle.internal.exceptions.LocationAwareException: A problem occurred configuring project ':app'. at org.gradle.initialization.DefaultGrad...
原创
1000阅读
3评论
0点赞
发布博客于 10 月前

Android: SourceTree上传项目代码到Gitlab

1.新建代码仓库,然后Projects-> Your project(代码仓库)-> 仓库列表选定目标仓库2. 点击上图的“ Add SSH key”,配置SSH key, 生成SSH key的步骤参考:https://www.jianshu.com/p/a0c783431620,简单来说先输入命令:ls -al ~/.ssh。 如果看到rsa相关的,就说明所在电脑以前...
原创
145阅读
0评论
0点赞
发布博客于 10 月前

android: SourceTree上传项目代码到Github

先图后文:1.点击头像-> your repositories(代码仓库)-> 仓库列表选定目标仓库 -> clone or download,复制出url2. sourceTree客户端设置图标 -> 账户 ,填写账户(选择github,basic,https,github用户名,github登陆密码)3.点击新建 -> 从URL克隆...
原创
91阅读
0评论
0点赞
发布博客于 10 月前

Android:7.0以上机型intent传递Bundle数据太大,退到后台报TransactionTooLargeException

http://www.bejson.com/convert/filesize/看logcat报的字节大小,如果为了精确计算可用上面的网址转换一下,如果bundle传递的数据过大超过了1MB,那么就会报这个异常,因为系统底层进行了传输限制,同样的数据传递在6.0的机型就一切正常不发生崩溃。解决方案:1.bundle intent的传递数据,用Gson转入转出,如果能减小到不发生c...
原创
275阅读
1评论
0点赞
发布博客于 10 月前

Android Firebase Dynamic Links 动态链接总是跳往应用商店的问题

关于部分机型动态链接启动APP后,高概率跳转到应用商店的调查,网上只能找到有人提过同样的问题,但是却没有具体的原因和有效的解决方案。下面测试使用的短链接为:https://i-fenrirdaliandev.ra9.app/links/XxX2SpMyXngWpiQs9,使用使用的浏览器是Chrome、Brave,使用官方提供的测试动态链接的Android调试桥测试过,link可以...
原创
488阅读
0评论
0点赞
发布博客于 1 年前

Android 动态链接Dynamic Link方式打开APP后退到后台,再点击APP图标后应用重启

原因的解答帖子在:http://www.apkbus.com/thread-173269-1-1.html这是android系统bug,点击打开按钮和点击桌面图标app的启动方式不一样,点击桌面图标,不会清空之前的activity管理队列,而是直接把activity放在其后,导致LZ遇到点击图标不断重启覆盖的问题。http://www.2cto.com/kf/201407/319948.h...
原创
164阅读
0评论
0点赞
发布博客于 1 年前

Kotlin: ZXing生成二维码

1. 引包 implementation "com.google.zxing:core:3.3.2" implementation "com.journeyapps:zxing-android-embedded:3.6.0"2. 调用类QrCodeUtil的封装方法createQRImage ,获得二维码的Bitmap:object QrCodeUtil { ...
原创
807阅读
0评论
0点赞
发布博客于 1 年前

Android 切换显示大小引起的Activity重启

切换显示大小导致的Activity重启,就不能利用configChange的属性去解决了,只能在加载的时候将Activity里面装载Fragment(如果本身代码就写在Fragment中就省事了),装载Fragment的时候,为Fragment添加标签Tag。 当切换完显示大小后,先判断是否有这个Fragment,如果有的话直接: supportFragmentManag...
原创
569阅读
0评论
0点赞
发布博客于 1 年前

Android 切换系统字体大小引起的Activity重启

解决方案: AndroidManifest.xml中configChanges中追加 “fontScale”configChanges="orientation|screenSize|keyboardHidden|fontScale"
原创
538阅读
2评论
0点赞
发布博客于 1 年前

kotlin: Fragment中监听物理返回键

官方提供的解决方案:https://developer.android.google.cn/guide/navigation/navigation-custom-back#implement_custom_back_navigation在Fragment中加入如下代码即可: requireActivity().onBackPressedDispatcher.addCallba...
原创
574阅读
0评论
0点赞
发布博客于 1 年前

Android 6.0 Toolbar上的menu item改变颜色无效

用SpannableString的方式改变menu item的颜色,发现高版本好使,6.0版本的机型上却无效。解决方案:在AppTheme的style中,加一个style: <!-- Base application theme. --> <style name="AppTheme" parent="Theme.MaterialComponents...
原创
101阅读
0评论
0点赞
发布博客于 1 年前

Android TextView autoLink 改变颜色,去掉link下划线

更改颜色:xml中使用textColorLink属性删除下划线:自定义一个继承UnderlineSpan 的子类,重写updateDrawState方法在其中处理xml界面代码:<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/...
原创
1011阅读
0评论
0点赞
发布博客于 1 年前

Android Button的背景色无法填满高度

效果和源码如下,能明显发现设置button背景以后,背景色距离上下边缘还有一定的距离,不能填满: <Button android:id="@+id/button_delete" android:layout_width="match_parent" android:layout_heigh...
原创
317阅读
0评论
1点赞
发布博客于 1 年前

kotlin: IllegalStateException: Cannot invoke setValue on a background thread

suspend函数中报了如下的异常日志: java.lang.IllegalStateException: Cannot invoke setValue on a background thread at androidx.lifecycle.LiveData.assertMainThread(LiveData.java:461) at androidx....
原创
2660阅读
0评论
0点赞
发布博客于 1 年前

Android Firebase Dynamic Links 动态链接使用心得

关于集成,看官网的写法就行了,集成并不麻烦:创建Firebase Dynamic Links:https://firebase.google.com/docs/dynamic-links/android/create接收Firebase Dynamic Links:https://firebase.google.com/docs/dynamic-links/android/rece...
原创
1103阅读
0评论
0点赞
发布博客于 2 年前

Android Leaks内存泄漏检测Rxbus

在Leaks上发现如上日志, 便推测和Rxbus有关,在销毁Activity的回调中,把观察者设为null便不泄漏了: override fun onDestroy() { subscription?.unsubscribe() super.onDestroy() }...
原创
249阅读
0评论
0点赞
发布博客于 2 年前

Android Charles:SSL handshake with client failed: An unknown issue occurred processing the XXXX

当charles出现这个错误 , 并且手机里CA证书也确定装好了,network-security-config的配置文件里也像上面那样写好了的话,就要注意代码中是否有auth认证,如果有auth认证的话就会抓包一直unKnown,抓不到数据...
原创
2705阅读
0评论
0点赞
发布博客于 2 年前

Android 安装Charles证书

1. 先通过代理,连接Android手机和电脑,ip用有线 (en1)2. 点击选中的蓝色item:3. 连着代理的手机,然后使用浏览器访问chls.pro/ssl,下载charles-proxy-ssl-proxying-certificate.pem文件:4. 下载完以后找到下载的这个文件,点击安装。(安装的时候会让你命个名,...
原创
1261阅读
0评论
0点赞
发布博客于 2 年前

Android ImageView.ScaleType的几种类别

CENTER 居中显示图片,但图片不会被缩放; CENTER_CROP 居中显示图片,对图片等比缩放(保持图片的长宽比),缩放后的图片长宽中较小的值能铺满ImageView控件; CENTER_INSIDE 居中显示图片,对图片等比缩放(保持图片的长宽比),缩放后的图片长宽中较大的值能铺满ImageView控件; FIT_CEN...
转载
38阅读
0评论
0点赞
发布博客于 2 年前

Android-Notification(兼容8.0+以及8.0以下).zip

Android Notification(兼容8.0+以及8.0以下),博客:https://blog.csdn.net/Crystal_xing/article/details/103159161
zip
发布资源于 2 年前

Android Notification通知的总结(兼容8.0+和8.0以下)

先上视频效果,左边是提醒式通知(弹横幅),右边是普通通知,通过Demo上的按键触发,解析一段写好的json拿到通知要显示的数据,然后弹notification: 有如下需要注意的几个关键点: 1.从Android 8.0(API级别26)开始,必须将所有通知分配给一个通道(channel),否则将不会收到通知, 处理Notific...
原创
1030阅读
0评论
0点赞
发布博客于 2 年前

Android java.net.URISyntaxException: Illegal character in query at index

具体场景,当输入“A&B”之后搜索,发现搜索的String变样了,“A&B” 变成了 “A%26B”,如下图所示 看日志的话能发现报了:URISyntaxException: Illegal character in query at index。这个错误的原因就是字符串里存在没编码的特殊字符。解决方案: 对于这样有特殊符号的字符串,...
原创
248阅读
0评论
0点赞
发布博客于 2 年前

Android 关于webview点击输入框无法弹出软键盘问题

试了网上诸多属性方面的设置都不好用,在这个网页找到了问题的根本原因:https://www.jianshu.com/p/5f8746eaada9。 根本原因是:自定义WebView的构造函数,用了3参数的创建,而且最后一个参数写了0。 解决方案: 改成双参数的构造就好了:...
原创
1287阅读
0评论
1点赞
发布博客于 2 年前

Android一些控件上显示的英文字母都被转为大写字母的原因分析及问题解决

原文链接:https://blog.csdn.net/cekiasoo/article/details/53718300解决方案:如果只针对某个Button控件有效,可以在写Button控件的时候把textAllCaps的值置为false
转载
128阅读
0评论
0点赞
发布博客于 2 年前

Android 不在Activity的子类中用主线程的写法

在Activity的子类中,可以直接用 runOnUiThread() , 但是如果是在普通类中,就没这个方法能调用了,最简单的写法是用Handler getMainLooper,下边贴上对比runOnUiThread的写法:- runOnUiThread(new Runnable() {- public void run() {- ...
原创
192阅读
0评论
0点赞
发布博客于 2 年前