![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
司徒游
这个作者很懒,什么都没留下…
展开
-
RecyclerView简单添加分割线
RecyclerView 并没有 divider 属性,但是我们可以通过 RecyclerView 的 addItemDecoration() 来添加分割线,该方法参数为 RecyclerView.ItemDecoration。当 RecyclerView 添加 ItemDecoration 后,RecyclerView 在绘制每个 item 的时候,会去绘制 decorator,也就是会调用 ItemDecoration 的 onDraw() 和 onDrawOver() 方法。RecyclerView.原创 2022-12-05 15:14:34 · 1756 阅读 · 0 评论 -
RecyclerView在ScrollView中完全展开
我们在开发过程经常会组合使用RecyclerView和ScrollView,但是它经常不兼容,后面发现只要给RecyclerView的外层加上一个RelativeLayout 就可以解决该问题。xml:Activity:至此,就可以实现想要的效果了。原文地址原创 2022-12-05 14:53:04 · 486 阅读 · 0 评论 -
onDestroy报空指针boolean androidx.fragment.app.FragmentManagerImpl.isDestroyed()‘ on a null object re...
原因:是因为自己在Fragment重点onDetach增加了如下代码,自己把它设为了空值导致的,新版本的Fragment不会再产生这个问题,可以直接把这部分代码去掉。原文地址原创 2022-12-05 14:47:18 · 501 阅读 · 0 评论 -
gradle 使用 exclude 解决jar包冲突
项目经常会引用第三用依赖库,比如主module有glide,引用的第三方库也引用glide,glide版本不一致,就容易冲突。1. 查看冲突的jar包;一眼能看出来的跳到第二步; 遇到隐藏比较深的就比较难受了,肉眼完全看不出来,此时打开AS的terminal控制台输入以下命令查看:gradlew -q app:dependencies 查看依赖树;比如: 报错信息:打开AS的terminal控制台输入:gradlew -q app:dependencies 右键find, 输入关键字dynami原创 2022-12-05 14:38:59 · 3037 阅读 · 1 评论 -
runOnUiThread()方法在线程中执行UI更新操作
如果你对于Android的Thread+Handler方式感觉繁琐,不妨试试Activity提供的另外一种简单的方法runOnUiThread,runOnUiThread可以帮助你在线程中执行UI更新操作,我们只需要在线程中写上类似的语句:这里需要注意的是runOnUiThread是Activity中的方法,在线程中我们需要告诉系统是哪个activity调用,所以前面显示的指明了activity。原文地址原创 2022-12-05 14:10:01 · 353 阅读 · 0 评论 -
HttpURLConnection中getInputStream()异常java.io.FileNotFoundException
在项目中遇到了一个HttpURLConnection网络请求报异常的问题 java.io.FileNotFoundException,后来通过debug定位到具体得问题出现在 urlConnection.getInputStream()上。HttpURLConnection POST请求时,当getResponseCode为HttpURLConnection.HTTP_OK(200)和HttpURLConnection.HTTP_CREATED(201)时正常连接,其他值时比如(403),httpURL原创 2022-12-05 11:57:52 · 2739 阅读 · 0 评论 -
使用Gson().fromJson数据总是返回null
混淆。原创 2022-11-21 11:56:48 · 2139 阅读 · 1 评论 -
限制EditText只能输入数字、限制输入类型、限制输入长度的小技巧
原文地址。原创 2022-11-21 11:43:27 · 1942 阅读 · 1 评论 -
(getStackTrace)将异常转化成String
有时候想获取异常日志详细信息上报(原创 2022-11-21 11:29:00 · 590 阅读 · 0 评论 -
java.lang.NumberFormatException: null的原因及解决方案
查找到了异常是出现在 paseInt() 方法中,在 String 类在转换成 Int 类时,原创 2022-11-21 11:20:22 · 6196 阅读 · 0 评论 -
使用Gson将Object转String出现\u003d 的原因
跟后台交互的时候,发现传过去的数据中有个 \u003d很明显,是=原创 2022-11-21 10:00:50 · 1178 阅读 · 0 评论 -
SharedPreferences保存List<T>数据
Sharepreferences是使用键值对的方式来存储数据的,但是Sharepreferences并不支持支持存储List数据。原创 2022-11-21 09:47:53 · 685 阅读 · 0 评论 -
Android List中带有时间String字段的排序
工具类://用来转换时间格式。转载 2022-11-09 15:32:35 · 553 阅读 · 0 评论 -
EditText进行字数的监听并且实施更改
【代码】EditText进行字数的监听并且实施更改。转载 2022-11-09 14:40:40 · 241 阅读 · 0 评论 -
WebView清除缓存
// // 启动应用缓存 ws.setAppCacheEnabled(false);// // 设置缓存模式 ws.setCacheMode(WebSettings.LOAD_NO_CACHE);原本设置这两个属性,每次加载H5页面都是新的,但是这两个属性对localstorage缓存无效。一种十分简单的方法,只需要在删除的时候调用即可:WebStorage.getInstance().deleteAllData();...原创 2022-01-22 11:38:08 · 14221 阅读 · 0 评论 -
判断List中是否含有某个实体bean
注意:使用List.contains(Object object)方法判断ArrayList是否包含一个元素对象(针对于对象的属性值相同,但对象地址不同的情况),如果没有重写List的元素对象Object中的equals方法,将导致contains方法始终返回false。 查看ArrayList的contains方法的源码如下:@Override public boolean contains(Object object) { Object[] a = array; int转载 2022-01-15 11:01:49 · 715 阅读 · 0 评论 -
友盟推送包名与ApplicationId不一致导致报错 RESCLASS未初始化
一. 问题背景这是在接入友盟6.1.0 push的SDK时候出现的错误。因之前的版本未出现,所以应该可以算作是版本更新后,需要对友盟push接入做新的适配。(不一定任何一个项目接入都会出现这个问题,要不然这就不算一个合格的SDK产品。)表现出来的结果是:推送数据到了,顶部栏的通知无法显示出来。2.问题解决问题是拿到的packageName不是真正的“packageName”。扩展:通过context.getPackageName()获取到的是ApplicationId。默认情况下A转载 2022-01-15 10:39:42 · 508 阅读 · 0 评论 -
Glide加载图片查看报错信息
Glide为我们提供了listener()方法,加上它就能看到报错信息了,查看log:package com.kite.imageloader;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.widget.ImageView;import android.widget.Toast;import com.bumpt转载 2022-01-15 10:26:09 · 724 阅读 · 0 评论 -
Bitmap 和 File 相互转换
图片文件转为Bitmap对象String filePath=”c:/01.jpg”;Bitmap bitmap=BitmapFactory.decodeFile(filePath);如果图片过大,可能导致Bitmap对象装不下图片解决办法:String filePath=”c:/01.jpg”;Bitmap bitmap=BitmapFactory.decodeFile(filePath,getBitmapOption(2)); //将图片的长和宽缩小味原来的1/2private转载 2022-01-15 10:23:19 · 6045 阅读 · 0 评论 -
Fragment中startActivityForResult没有执行回调
在ViewPager中的Fragment不执行回调,解决步骤:1.检查Fragment中的onActivityResult()方法中是否写了super.onActivityResult,切记这里千万不要手贱给删了。不然就像我懵逼了半个多小时。2.检查Fragment中的startActivityForResult的调用方式,不要getActivity().startActivityForResult(),因为这样会让回调回到Activity中。直接startActivityForResult() 或转载 2022-01-15 10:19:10 · 552 阅读 · 0 评论 -
viewpager+fragment实现沉浸式状态栏
MainActivity中使用ViewPager+Fragment的方式作为首页,但是每个fragment有独立的状态栏颜色,同时还要适配刘海屏,水滴屏。直接上代码:<!--给APP设置为无标题栏样式,在style下--><resources> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:window转载 2022-01-14 17:26:32 · 906 阅读 · 1 评论 -
拍照功能横竖屏处理方法
1)、设置Activity强制横屏,成像效果不错,所见即所拍,但是系统组件一样跟着横屏,比如菜单,图片预览对话框等。//横屏 //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);2)、设置相机预览强制横屏,能解决竖屏变形问题,但是横屏又悲剧了。//设置相机强制横屏,防止预览变形 //mCamera.setDisplayOrientation(90);3)、吸收方法1)和2)的教训,我们来一个完全之策:设置Ac转载 2022-01-14 17:15:50 · 2514 阅读 · 0 评论 -
安卓中短信验证码倒计时的几种方式
发送短信验证码后,一般在界面上都会有一个倒计时的显示.在安卓中,实现类似的倒计时有多种方式,当然背后的基本原理都是设定一个初始值,然后每过一定的间隔时间执行操作.1.用安卓自带的CountDownTimer实现这是最简洁的实现方式.安卓提供了一个CountDownTimer类用于倒计时功能.其使用方法在注释里面写的已经比较清楚了.记时开启后禁掉控件的点击事件,倒计时结束后再开启.防止重复点击导致多个任务运行.private void countDownTime() { //用安卓自带的C转载 2022-01-14 17:06:17 · 1318 阅读 · 0 评论 -
yyyy年MM月dd日中提取出单独的年,月,日
public class DateDemo{ public static void main(String[] args){ String str = new java.text.SimpleDateFormat("yyyy年MM月dd日").format(new java.util.Date()); String yeah = str.substring(0,4); //取年 String yue = str.substring(str.index.转载 2022-01-14 16:31:05 · 1062 阅读 · 0 评论 -
android Studio keytool‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
//android Studio keytool' 不是内部或外部命令,也不是可运行的程序 或批处理文件解决方法步骤:①找到Java安装路径下的keytool:②打开运行先转到你的keytool文件夹路径下,然后回车。再运行它(输入keytool.exe 快捷键是Tab建和Linux一样),然后在后边输入命令 -list -keystore 输上后后边跟的就是你的debug.keystore文件的对象路径。然后提示输入密库口令 输入android ,再回车就看见你的Sha1了。转载 2022-01-14 15:48:37 · 759 阅读 · 0 评论 -
Gson字符串转换对象数组
public class Input{ private String title; private int formId; private String content; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int get.转载 2022-01-14 15:39:44 · 2020 阅读 · 1 评论 -
解决Android Studio 每次修改后,都要删除build文件,然后rebuild project才生效
1、 打开配置:2、配置3、设置Run Gradle task输入insallDebug再编译运行即可转载 2022-01-14 15:42:17 · 2245 阅读 · 0 评论 -
double转整型
int n=3;我们用pow函数求出它的平方,此时数据类型为doubledouble s=Math.pow(n,2);我们要将其转化为整型数据,则应该如下操作int t=(new Double(s)).intValue();有时我们要求的数据范围比较大,int不能满足,则应该转化为long类型long x=(new Double(s)).longValue();...转载 2022-01-14 15:02:57 · 1695 阅读 · 0 评论 -
Java时间和时间戳的相互转换
时间转换为时间戳:/* * 将时间转换为时间戳 */ public static String dateToStamp(String s) throws ParseException{ String res; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = simpleDateFo转载 2022-01-14 14:44:18 · 2260 阅读 · 0 评论 -
两个double类型比较大小
/** * @return >0,第一位数大 */ public static int compare(double double1, double double2) { BigDecimal data1 = new BigDecimal(double1); BigDecimal data2 = new BigDecimal(double2); return data1.compareTo(data2);}...转载 2022-01-14 14:30:20 · 590 阅读 · 0 评论 -
android开发中要注意的细节
时刻注意单一职责原则,一个类专心做好一件事情更为清晰。 异常抛出,在合适的位置处理或者集中处理,不要搞的到处是catch,混乱且性能低。 注释,尽量去写足够的注释,去描述一下思路,达到看了可以明白某一块代码的效果。 ...转载 2022-01-10 16:58:21 · 79 阅读 · 0 评论 -
Android设置点击物理返回键后应用后台运行而不是退出
@Override public void onBackPressed() {//重写的Activity返回 Intent intent = new Intent(); intent.setAction("android.intent.action.MAIN"); intent.addCategory("android.intent.category.HOME"); startActivity(intent);}原文.转载 2021-07-23 15:55:47 · 335 阅读 · 0 评论 -
Android拍照/裁剪 保存完图片,系统相册不显示问题解决。
public String save(Context context) { String fileName = "mosaic_"+System.currentTimeMillis()+".png"; File file = new File(FileUtils.getMosaicDir(),fileName); try { FileOutputStream outputStream = new FileOutputStream(fi.转载 2021-07-23 15:49:35 · 520 阅读 · 0 评论 -
Gradle各版本下载地址
https://downloads.gradle.org/distributions/gradle-2.5-all.zip自己修改url里面的版本号,复制到浏览器访问就可以下载了原创 2021-07-23 15:23:40 · 147 阅读 · 0 评论 -
Android 底部导航栏中间凸起、越界显示
1、只需在根节点设置Android:clipChildren为false即可,默认为true2、可以通过android:layout_gravity控制超出的部分如何显示。3、android:clipChildren的意思:是否限制子View在其范围内一:实现效果:二:关键原理:1、只需在根节点设置Android:clipChildren为false即可,默认为true2、可以通过android:layout_gravity控制超出的部分如何显示。3、android:cl.转载 2021-07-23 15:20:52 · 1555 阅读 · 0 评论 -
Android退出时退出所有Activity的通用类,ActivityManager
做Android项目,退出程序时,有时不能退出所有的activity,这时我们就需要在退出时,关闭所有的activity。思路:当activity创建的时候把当前的Activity对象存放起来,等到退出的时候,关闭所有的Activity。为此,写了一个MyApplication类,用于存放所有的Activity。代码如下:import java.util.LinkedList;imp转载 2015-05-11 10:39:57 · 410 阅读 · 0 评论 -
Android中的Selector的用法
Android中的Selector主要是用来改变ListView和Button控件的默认背景。其使用方法可以按一下步骤来设计:(以在mylist_view.xml为例)1.创建mylist_view.xml文件首先在res目录下新建drawable文件夹,再在新建的drawable文件夹中新建mylist_view.xml,其目录结构为:res/dr转载 2015-05-11 10:23:49 · 319 阅读 · 0 评论 -
android表格效果--ListView隔行变色、颜色表
import meetweb.net.util.SpecialAdapter;private SpecialAdapter simpleAdapter = null;public void ShowData(){ RateList = rateService.findAll(); System.out.println(RateList); LVrate=(ListView) thi转载 2015-05-11 10:28:55 · 1002 阅读 · 0 评论 -
Android之Context和Activity互相转换
Activity activity = (Activity) context;activity.finish();转载 2015-05-11 10:39:40 · 1159 阅读 · 0 评论 -
关于TextView.setTextColor(int); 括号里那个颜色int值的问题
第1种:tv.setTextColor(android.graphics.Color.RED);//系统自带的颜色类第2种:tv.setTextColor(0xffff00ff);//0xffff00ff是int类型的数据,分组一下 0x|ff|ff00ff,0x是代表颜色整数的标记,ff是表示透明度,ff00ff表示颜色,注意:这里ffff00ff必须是8个的颜色表示,不接转载 2016-03-17 10:35:54 · 530 阅读 · 0 评论