
android
盛大人很低调
这个作者很懒,什么都没留下…
展开
-
解决报错: unable to find valid certification path to requested target
但是报错也没指出是下载哪个依赖时报的错,后来clean project后看到了是下面这个依赖无法下载。出现这个问题的原因是下载某个依赖时访问的域名的证书不受信任。右键小锁,证书有效 - 详细信息 -导出。这个就是下载的证书文件,放在d盘跟补录了。初始密码: changeit。导入成功后,重启as即可。原创 2023-07-20 13:13:05 · 3736 阅读 · 0 评论 -
Handler内存泄漏原因及解决方案
一、Handler造成内存泄露的原因在Activity内将Handler声明成非静态内部类或者匿名内部类,这样Handle默认持有外部类Activity的引用。如果Activity在销毁时,Handler还有未执行完或者正在执行的Message,而Handler又持有Activity的引用,导致GC无法回收Activity,导致内存泄漏。如以下两种情形可能导致内存泄漏1、在Activity内将Handler声明成匿名内部类: //匿名内部类 private Handler mHandler原创 2022-03-31 08:59:43 · 5520 阅读 · 0 评论 -
android编译报错:Run with --stacktrace option to get the stack trace
编译项目时报了截图所示的错误,但是并未告知哪里错了,可以照着提示在命令行执行命令:gradle compileDebug --stacktrace于是就可以看到具体的报错日志了。原创 2022-03-19 15:27:27 · 3525 阅读 · 0 评论 -
写Gradle自定义插件Plugin
Gradle插件支持groovy、java、kotlin语言,根据使用的语言,我们需要把插件代码分别放到下面几个对应的目录:rootProjectDir/buildSrc/src/main/groovyrootProjectDir/buildSrc/src/main/javarootProjectDir/buildSrc/src/main/kotlin这里以java语言为例,写个自定义插件1、新建项目,然后创建名称为buildSrc的module(注意,module的名称必须是buildSrc)原创 2021-12-15 12:03:49 · 2485 阅读 · 0 评论 -
studio 4.0新建class不带public的解决方法
里面内容改为:#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end#if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK}#end#parse("File Header.java")#if (${VISIBILITY} == "public") public #end #if (${VISIBILITY} == "") public #end #if (${ABSTRACT} == "true")abs.原创 2021-11-16 11:49:44 · 319 阅读 · 0 评论 -
将日志写到手机文件
package com.bsoft.common.util;import android.util.Log;import com.bsoft.baselib.util.ContextUtil;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.text.SimpleDateFormat;import java.原创 2021-09-15 15:14:21 · 291 阅读 · 0 评论 -
Android Studio 4.2 设置右侧Gradle面板中Tasks显示/隐藏
原创 2021-07-29 14:34:34 · 1078 阅读 · 0 评论 -
使用 jsbridge 实现原生和js相互调用
使用 WebViewJavascriptBridge 进行交互方法 与Android、IOS进行交互参考:https://www.jianshu.com/p/e37ccf32cb5b参考:https://www.jianshu.com/p/910e058a1d63/原创 2021-07-27 09:17:36 · 1794 阅读 · 0 评论 -
解决adb connect 连接Android设备报错:由于目标计算机积极拒绝,无法连接
1.手机打开开发者模式,然后打开USB调试2.使用USB数据线连接手机和电脑3.在PC端打开cmd命令窗口,输入adb devices ,可以看到已经连接的设备4.输入adb tcpip 8888 (设置端口号为8888)5.断开手机和电脑的连接6.输入adb connect 10.32.14.185:8888,连接成功...原创 2021-06-29 10:30:25 · 4983 阅读 · 1 评论 -
adb连接手机
1、首先电脑和手机连接同一个wify2、cmd进入命令行,执行命令:adb connect 10.32.14.185:5555其中,10.32.14.185为手机ip地址,5555为端口号3、执行adb devices,可查看连接的设备:原创 2021-06-18 11:45:27 · 705 阅读 · 0 评论 -
Https证书crt或者cer转换成bks文件
1、下载bcprov-jdk15on-165.jar:http://www.bouncycastle.org/latest_releases.html2、打开cmd执行命令:keytool -importcert -v -trustcacerts -alias 位置1 -file 位置2 -keystore 位置3 -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpat原创 2020-06-12 10:51:25 · 2016 阅读 · 1 评论 -
解决SwipeRefreshLayout拦截ViewPager的滑动冲突
/** * Created by shengqf * Email : shengqf@bsoft.com.cn * date : 2020/2/20 * describe : 解决SwipeRefreshLayout拦截ViewPager的滑动冲突 */public class ViewPagerSwipeRefreshLayout extends SwipeRefreshLayout...原创 2020-02-20 15:51:21 · 404 阅读 · 0 评论 -
这是一份值得你去查看的Android安全手册
文章转自:这是一份值得你去查看的Android安全手册问题:RSA加密算法不安全使用带来的安全风险RSA加密算法是一种非对称加密算法。当其密钥长度过短,通常认为长度小于512位时,就会存在较高的被破解风险;没有使用正确的工作模式和填充方式,将会存在重放攻击的风险。因RSA加密算法不安全使用造成的加密方法失效,可能造成客户端隐私数据泄露、加密文件破解、传输数据被获取、中间人攻击等后果,导致用户敏...原创 2019-10-14 09:15:25 · 609 阅读 · 0 评论 -
Run出来的apk直接在手机上安装不上的原因
文章转自:为什么我把 Run 出来的 Apk 发给老板,却装不上!一、testOnly 属性Run 出来的 APK,会在 AndroidManifest.xml 文件中,增加 android:testOnly 属性,正是因为这个属性,阻止了我们使用正常方式安装 APK。当你使用 adb install 安装 android:testOnly=“true” 的包时,输出的错误信息,明确的标记了...原创 2019-10-14 09:11:28 · 530 阅读 · 0 评论 -
为RecyclerView添加ContextMenu
这里要实现的是RecyclerView的item的长按事件与Menu关联 先看看要写的效果: 1、在res下新建menu目录,在menu目录下新建recyclerview_menu.xml文件:<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android原创 2017-08-31 13:30:26 · 1595 阅读 · 0 评论 -
android 属性动画之 ObjectAnimator
一、ObjectAnimator展示单个动画效果1、translate //view从原始位置减速下移500,无限循环 private void translationY1(View view) { ObjectAnimator animator = ObjectAnimator.ofFloat(view, &amp;amp;amp;amp;quot;translationY&amp;amp;amp;amp;quot;, 0f, 500f);原创 2019-02-14 15:02:21 · 1796 阅读 · 0 评论 -
上传Library到jcenter仓库的步骤
参考:http://www.jianshu.com/p/6a6eca8c24c4一、先说下注册:如果点下图中那个大大的绿色按钮就错了,因为那样注册的是一个组织注册个人的地址是: https://bintray.com/signup/oss二、创建要上传的library1.新建要上传的module这里我将mylibrary上传到jcenter2.根目录buil...原创 2019-02-28 08:42:48 · 893 阅读 · 0 评论 -
通过一个View创建Bitmap
public class BitmapUtil { //节省每次创建时产生的开销,但要注意多线程操作synchronized private static final Canvas sCanvas = new Canvas(); /** * 从一个view创建Bitmap: * 注意点:绘制之前要清掉 View 的焦点,因为焦点可能会改变一个 View 的 U原创 2017-09-06 20:45:02 · 446 阅读 · 0 评论 -
使用RxJava处理运行时权限
1、导入依赖:compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.1@aar'compile 'io.reactivex.rxjava2:rxjava:2.0.5'2、使用代码:findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {原创 2017-08-24 14:45:52 · 379 阅读 · 0 评论 -
Error:Unable to load class 'org.gradle.api.internal.component.Usage'.
今天在Gitbub上下载了一个热门开源项目运行时报的错: 后来google搜索了一下,发现原来是我所使用的gradle的版本(2.3.3)不兼容’com.novoda:bintray-release:0.4.0’的gradle的版本,于是将其改为:'com.novoda:bintray-release:0.5.0'然后,报的错消失了。特此记录下,下次遇到此类问题就不要再去搜索了。原创 2017-07-29 16:31:43 · 1865 阅读 · 0 评论 -
获取attrs.xml中声明的自定义属性的值
关键代码: private void init(Context context,AttributeSet attrs) { TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CircleView); mRadiu = ta.getDimensionPixelSize(R.styleabl原创 2017-07-06 17:47:05 · 1439 阅读 · 0 评论 -
Uri转换为String类型路径
public static String getPathFromUri(Context context, Uri uri) { if (null == uri) { return null; } String scheme = uri.getScheme(); String path = null;原创 2017-07-03 14:10:53 · 5492 阅读 · 2 评论 -
Uri权限问题&&FileProvider学习
今天用andriod 6.0的手机运行某个项目,进入主页面弹出更新弹窗,点击更新,发现任务栏下载完毕后点击安装时崩溃了,也没有错误日志,搜了半天终于发现问题所在。原来,从android 7.0开始,不再支持file://类型的URI了,若要共享文件得使用FileProvider,所以在文件共享这块,需要做适配了。示例代码:if (Build.VERSION.SDK_INT>=Build.VERSIO原创 2017-06-30 14:25:41 · 5255 阅读 · 0 评论 -
监听软件盘的弹出和隐藏
根布局为线性布局时用此布局替换:public class InputLinearLayout extends LinearLayout{ private int width; private int height; public static final int KEYBORAD_HIDE = 0; public static final int KEYBORAD_S原创 2017-06-12 14:43:18 · 552 阅读 · 0 评论 -
将项目的library生成aar并导入别的项目
现在A项目要用到B项目的某个module(这里暂且命名为netwok)。B项目在编译过后,在network这个module的build/outputs/aar目录下,会生成2个aar文件,如下图所示:==============================================方式一:1、将B项目network这个module的build/outputs/aar文件夹下的network原创 2017-06-10 22:52:34 · 545 阅读 · 0 评论 -
压缩图片至指定大小
public class BitmapUtil { /** * * @param bitmap * @param maxSize 当传入的bitmap的大小大于maxSize时,压缩图片至maxSize * @return */ public static Bitmap getCompressedBitmap(Bitmap bitma原创 2017-06-03 16:27:21 · 614 阅读 · 0 评论 -
ScrollView里嵌套 RecyclerVIew 时,拦截RecyclerVIew 触摸事件
解决ScrollerView里嵌套 RecyclerVIew 时,RecyclerVIew 滑动不流畅的问题:public class MyScrollview extends ScrollView { private int downX; private int downY; private int mTouchSlop; public MyScrollview(Co原创 2017-03-09 21:12:16 · 990 阅读 · 0 评论 -
解决ScrollView里嵌套多个RecyclerView时,RecyclerView数据显示不全的问题
/** * 最大化的RecyclerView,嵌套于ScrollView之中使用 */public class MaxRecyclerView extends RecyclerView { public MaxRecyclerView(android.content.Context context, android.util.AttributeSet attrs){ su原创 2017-03-09 16:10:48 · 2787 阅读 · 0 评论 -
OnScrollListener接口的方法详解
一、OnScrollListener的两个方法被执行时机 //用来标记是否正在向最后一个滑动 boolean isSlidingToLast = false; @Override public void onScrollStateChanged(RecyclerView recyclerView, int newSt翻译 2017-03-01 21:09:41 · 8391 阅读 · 0 评论 -
lambda表达式代替匿名内部类
1、Gradle(Project)中添加classpath:classpath 'me.tatarka:gradle-retrolambda:3.2.0'2、Gradle(Module)中添加apply:apply plugin: 'me.tatarka.retrolambda'3.Gradle(Module)中添加Java版本:` compileOptions { sourc转载 2017-02-14 09:22:58 · 3027 阅读 · 0 评论 -
使用此Adapter,代码量可大大减少
123原创 2017-02-09 22:00:10 · 531 阅读 · 0 评论 -
RecyclerView的基本使用
一、添加gradle依赖。二、RecyclerView实现垂直滚动的列表:1.RecyclerView适配器:public class BombAdapter extends RecyclerView.Adapter<BombAdapter.ViewHolder>{ private List<Bomb> mList; private Context mContext; publi转载 2017-02-09 21:48:54 · 345 阅读 · 0 评论 -
沉浸式状态栏
转自:https://juejin.im/post/5a25f6146fb9a0452405ad5b由于沉浸式状态栏设置是在Android 4.4之后才提供的,所以我们需要对Android 4.4以上的系统做适配。Android 4.4有两种方式可以实现沉浸式状态栏,一种是在资源文件中设置,一种是在代码中设置。1、资源文件中设置沉浸式状态栏首先,我们要修改values/styles.xml,在里面添转载 2017-12-11 19:11:14 · 210 阅读 · 0 评论 -
设置DatePickerDialog主题颜色及起始日期
如图: 代码:findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //通过values和values-v21下的MyDatePickerDialogT原创 2017-11-23 18:29:17 · 14950 阅读 · 2 评论 -
This Handler class should be static or leaks maight occur
在使用Handler更新UI的时候出现警告: 意思是说:这个Handler 必须是static的,否则就会引发内存泄露。解决: 让Handler持有一个对Activity的WeakReference,这样就不会泄露Activity的上下文了:public class TestActivity extends AppCompatActivity { private fi...转载 2018-03-02 14:47:16 · 433 阅读 · 0 评论 -
使刚打开页面时EditText不自动闪光标
找到布局文件中第一个EditText的父级控件或者根布局控件,为其添加以下属性: android:focusable="true" android:focusableInTouchMode="true"原创 2018-04-08 15:40:24 · 2934 阅读 · 1 评论 -
根据手机屏幕的密度获取drawable对应目录下的图片
转自:https://blog.youkuaiyun.com/guolin_blog/article/details/50727753根据如下方式获取到屏幕的dpi值:float xdpi = getResources().getDisplayMetrics().xdpi;float ydpi = getResources().getDisplayMetrics().ydpi;其中xdpi代表屏幕宽度的dpi转载 2018-03-27 13:27:19 · 609 阅读 · 0 评论 -
alibaba/ARouter的简单使用
一、配置: (1)在各个module的build.gradle文件中添加依赖: //Arouter api 'com.alibaba:arouter-api:1.3.1' annotationProcessor 'com.alibaba:arouter-compiler:1.1.4'(2)在各个module的build.gradle文件的defaultConfi...原创 2018-04-12 21:45:32 · 2663 阅读 · 0 评论 -
引入开源库依赖时,com.android.support版本不同引发冲突的解决办法
最近学习ARouter,发现导入ARouter依赖时,引发com.android.support版本冲突: 如上图所示,左边圈红的两个25.2.0的support包就是ARouter引进来的,和项目的support 27.1.1冲突了,解决: 如果很多第三方包都有与support包冲突的话,可以在build文件添加以下代码://强制所有的第三方包使用指定版本的support包:...原创 2018-04-13 10:03:40 · 4521 阅读 · 1 评论 -
解决Fragment里嵌套ViewPager滑动卡顿的问题
一、先来看一下ViewPager左右滑动正常情况:如下图所示,Activity 里有一个ViewPager,ViewPager左右滑动的时候切换“我申请上”和“我受邀上”两个Fragment 代码如下: 二、再来看一下ViewPager左右滑动卡顿的情况:如下图所示,Fragment 里有一个ViewPager,ViewPager左右滑动的时候切换“我申请上”和“我受邀上”两个...原创 2018-04-18 23:12:00 · 5178 阅读 · 2 评论