android相关
轻狂书生YT
这个作者很懒,什么都没留下…
展开
-
butterknife 遇上 AndroidX
当 butterknife 遇到 AndroidX原创 2020-07-09 17:39:50 · 2889 阅读 · 0 评论 -
Android webView去除默认边框
Android WebView无论怎么修改它的属性都会存在一定的边距。这是因为 HTML 的 body 标签默认存在一定边距。修改 webView 的属性并没有作用!解决办法: 修改 html 代码html ="<html><head><style>img{width:100% !important;}</style></head><body style='margin:0;padding:0'>" +data//原本需要原创 2020-05-26 15:15:34 · 1252 阅读 · 1 评论 -
android view.getLeft(), getRight()...等获取值为0
android view.getLeft(), getRight()…等获取值为0我们在onCreate()回调方法中去调用view.getLeft(), getRight()…getX()、getY() 等值为0问题原因View的显示必须经历Measure(测量)、Layout(布局)和Draw(绘制)过程。而在Measure与Layout过程完成之后,View的width、height、top、left等属性才被正确赋值,此时我们才能获取到正确的值,这几个过程都晚于onCreate执行解决1原创 2020-05-22 14:52:42 · 2063 阅读 · 0 评论 -
Android中 view.getLeft() & .getTop() & getX() & getY() 等的用法图示
Android中 view.getLeft() & .getTop() & getX() & getY() 等的用法图示getX(): 该view坐标系中,x坐标值getY():该view坐标系中,y坐标值getLeft():该view距离父布局左边的距离getRight():该view的右边框与父布局左边的距离 (getLeft()+本身宽度)getTop():该view距离父布局上边的距离getBottom():该view的底部与父布局上边的距离 (getTop(原创 2020-05-22 14:49:03 · 761 阅读 · 0 评论 -
Android 集成腾讯 TBS X5内核,并使用 TbsReaderView 加载 .pdf 文件
Android 集成腾讯 TBS X5内核,并使用 TbsReaderView 加载 .pdf 文件tbs的接入:腾讯官网的接入步骤: 添加链接描述在官方文档中有各种优缺点的比较,以及比较详细的集成步骤。自己接入过程的总结:可以使用 下载 jar 包并编译的方式。目前最新版的 tbs 还可以使用 dependencies 的方式接入,建议使用这一种:一、使用 dependencies 方式接入1、在模块的 dependencies 中添加:api 'com.tencent.tbs.tbss原创 2020-05-15 09:11:22 · 8096 阅读 · 2 评论 -
Android快速获取开发版SHA1 & 发布版SHA1的两种方式
在 Android 开发过程中,有时会需要我们去获取开发和发布版的 SHA1。例如在集成百度地图时,申请百度地图AK时就需要SHA1。开发版 SHA1:在安装了开发环境并创建项目后,在 C\:用户\.Android \文件夹下 会默认生成 debug.keystore 文件,可以根据这个文件来获取。发布版SHA1:要将APP打包并发布到应用商店前,需要对这个 APK 进行签名,保证该apk发布者的唯一性,需要生成数字证书 .jks 文件。根据这个文件来获取。原创 2020-05-09 14:22:44 · 1664 阅读 · 0 评论 -
Android生成签名文件对应用签名 & Android签名作用
1、 Android签名机制其实是对APK包完整性和发布机构唯一性的一种校验机制。2、Android签名机制不能阻止APK包被修改,但修改后的再签名无法与原先的签名保持一致。(除非拥有发布者的私钥)。3、APK包加密的公钥就打包在APK包内,且不同的私钥对应不同的公钥。换句话言之,不同的私钥签名的APK公钥也必不相同。所以我们可以根据公钥的对比,来判断私钥是否一致。4、确定发布者身份,可以根据公钥来对APP进行更新,换句话说:可以防止APP被其他包名相同应用覆盖原创 2020-05-09 14:00:08 · 3070 阅读 · 0 评论 -
ViewPager、PagerAdapter 的使用详解
ViewPager、PagerAdapter 的使用详解原创 2020-04-28 17:12:14 · 2339 阅读 · 0 评论 -
Android仿微信发布朋友圈图片多选器实现
前段时间由于项目需要,自己弄了一个仿微信朋友圈图片多选的功能,支持图片单选/多选。支持视频、图片的扫描和视频图片的预览。并且封装功能模块后上传到了 jitPack。封装流程:[点击这里查看封装发布流程](https://blog.csdn.net/qq_41466437/article/details/105529925)原创 2020-04-15 11:18:46 · 833 阅读 · 0 评论 -
Android 发布项目到 jitpack 流程详解
总体流程介绍步骤一、在本地创建一个 libiary 工具类;步骤二、配置 JitPack 相关的配置信息;步骤三、排查自己工具类中的错误并上传到 github;步骤四、创建 release 并在 [JitPack](https://jitpack.io/) 中编译;步骤五、在项目中引用原创 2020-04-15 10:54:22 · 1236 阅读 · 0 评论 -
Android状态check、focused、pressed、selected
Android状态check、focused、pressed、selected原创 2020-04-10 10:04:53 · 660 阅读 · 0 评论 -
Android 新建Module 时 Project needs to be converted to androidx.* dependencies 问题解决
Android 新建Module 时 Project needs to be converted to androidx.* dependencies 问题解决原创 2020-04-03 11:55:12 · 1637 阅读 · 0 评论 -
Android:Activity.OnCreate方法中子线程可以更新UI,睡眠后不能更新UI的原因
因为在View中对 ViewParent 实现类有一个判断,当它不为空时才会执行到这里,而 ViewParent 在Activity生命周期的 OnResume 方法中才会被赋值。所以在 onCreate 方法中如果使用子线程是可以做一波更新UI操作的。线程在CPU中调度随机的关系,子线程到这个判断的时候,主线程可能并没有创建ViewParent并赋值。原创 2020-03-31 11:42:29 · 992 阅读 · 0 评论 -
Android系统中内部存储和外部存储(公有目录、私有目录、缓存目录)详解
内部存储是指系统内部存储空间,**在逻辑上用目录来区分的话就是data目录下的文件夹**除此之外data目录下有app目录存放系统下载的apk信息,有data目录存放各种文件例如:sharedPreferenced存储的文件在 /data/data/<packagename>/shared_prefs/目录下。Sqlite存储的文件在 /data/data/<packagename>/database/目录下。原创 2020-03-19 16:20:26 · 6747 阅读 · 0 评论 -
Android自定义view——自定义九宫格屏幕解锁实现
Android自定义view——自定义九宫格屏幕解锁实现原创 2020-03-10 21:06:12 · 202 阅读 · 0 评论 -
Android事件分发机制流程源码详解
Android上面的View是树形结构的,View可能会重叠在一起,当点击的地方有多个View可以响应的时候,这个点击事件应该给谁呢?为了解决这个问题,就有了事件分发机制。Android中每一次用户与界面的交互,点击、长按、移动、抬起等都是一个事件每一个事件从屏幕上传递到各个view上,并由某个view来处理事件(消费事件)或忽略事件(不消费事件)的这一整个过程的控制。称为事件分发机制。原创 2020-03-10 17:02:03 · 294 阅读 · 0 评论 -
Android Paint画笔基本用法
Android Paint画笔基本用法原创 2020-03-06 18:10:26 · 718 阅读 · 0 评论 -
Android中为什么主线程不会因为Looper.loop里的无限循环ANR?
在学习了Android Handler机制之后,产生了一个问题:为什么在主线程中Looper.loop()运行了一个死循环,但是并没有造成ANR?原创 2020-03-03 11:27:05 · 513 阅读 · 0 评论 -
Android handler机制流程详解
一条线程Thread对应唯一的一个Looper,其对应相关的信息存储在ThreadLocal中。一个Looper对象持有一个自己的MessageQueue。在同一条线程中,无论创建多少handler,都只对应一个Looper和一个MessageQueue。因此,handler在被创建时就根据Looper与对应的线程进行了绑定,即使在别的线程根据该handler发送了消息,也会被发送到handler对应的Looper的MessageQueue消息队列中并被分发处理原创 2020-03-03 11:18:49 · 536 阅读 · 0 评论 -
Android设置drawableRight或drawableLeft后设置图标与文字间距
Android设置drawableRight或drawableLeft后设置图标与文字间距在项目中,当给控件设置drawableRight=“图片资源”或drawableLeft="图片资源"后,常常会达不到自己想要的结果,比如图片资源离文字太远或太近这时就需要Android:drawablePadding="dp"来控制,设置这个属性之后,会使得控件中文字和图片之间有间距产生,达到我们...原创 2020-02-20 14:20:05 · 5263 阅读 · 0 评论 -
Android数据存储之SQLite
SQLite是一个轻量级嵌入式数据库引擎,支持SQL语言。一、特点:1、可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite将检查它的数据类型。如果该类型和关联的列不匹配,那么SQLite会尝试将该值转换成该列的数据类型,如果不能转换,那么该值将作为其本身具有的数据类型存储2、内置丰富API(SQLiteDatabase、SQLiteOpenHelper,Cursor等)3、存储位置:存储路径在**/data/data/<packagename>/databases/**下原创 2020-02-14 18:26:40 · 217 阅读 · 0 评论 -
Android数据存储之SharedPreferences
SharedPreferences是一种轻量级的数据存储方式,采用键值对的存储方式。SharedPreferences**只能存储少量数据**,大量数据不能使用该方式存储,支持存储的数据类型有boolean、float、int、long、string。SharedPreferences**存储到一个XML文件中的**,路径在**/data/data/<packagename>/shared_prefs/**下,文件名以及存储后面详细讲述原创 2020-02-11 11:32:23 · 1399 阅读 · 0 评论 -
解决设置ImageView的scaletype为centerCrop后padding显示异常问题
解决设置ImageView的scaletype为centerCrop后padding显示异常问题原创 2020-01-10 19:24:15 · 798 阅读 · 0 评论 -
Android中Webview实现长按保存图片、并添加到媒体扫描器
一、给webView添加长按监听OnLongClickListener二、获取长按元素类型,判断是否是图片三、将获取到的元素转换为图片并保存四、添加到媒体扫描器,使相册可以实时扫描到更改原创 2020-01-02 10:31:20 · 985 阅读 · 0 评论 -
Android WebView加载本地资源文件(html、css、js)
Android WebView加载本地资源文件(html、css、js)原创 2019-12-26 09:29:27 · 6142 阅读 · 2 评论 -
MediaController+VideoView播放视频实现及play/pause出错时处理
MediaController+VideoView播放视频实现及play/pause出错时处理MediaController可以用于配合VideoView播放一段视频,它为VideoView提供一个悬浮的操作栏,在操作栏中可以对VideoView播放的视频进行控制,默认情况下,会悬浮显示三秒。它通过MediaController.setMediaPlayer()方法进行指定需要控制的VideoV...原创 2019-12-18 18:59:48 · 1084 阅读 · 0 评论 -
Android VideoView详解
Android VideoView详解VideoView,用于播放一段视频媒体,它继承了SurfaceView,位于"android.widget.VideoView",是一个视频控件。既然是播放一段视频,那么不可避免的要涉及到一些开始、暂停、停止等操作,VideoView也为开发人员提供了对应的方法,这里简单介绍一些常用的:int getCurrentPosition():获取当前播放的位...原创 2019-12-18 18:57:41 · 4617 阅读 · 0 评论 -
Android异步调用实现子线程刷新UI
Android异步调用实现子线程刷新UI由于UI线程(也可叫主线程)负责处理用户输入事件(TP事件,显示事件等),直接与用户交互,如果UI线程阻塞,直接会影响用户的体验效果,严重的会报ANR错误。所以我们需要把耗时操作移出主线程,在子线程中进行处理。下面罗列几种实现异步加载的方式。传统JAVA方法实现异步1.继承Thread类代码如下package UseThred; public...原创 2019-12-11 21:19:43 · 393 阅读 · 0 评论 -
查看android内置(webview)浏览器和系统浏览器内核信息
查看android内置(webview)浏览器和系统浏览器内核信息原创 2019-11-30 15:37:21 · 8592 阅读 · 0 评论 -
有网络权限时依然报错net::ERR_CACHE_MISS
有网络权限时依然报错net::ERR_CACHE_MISS原创 2019-11-30 14:53:49 · 3267 阅读 · 1 评论 -
android WebView对下载链接的拦截的问题解决
android WebView对下载链接的拦截的问题解决@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.endsWith(".apk")) { Uri uri = Uri.parse(url); ...原创 2019-11-27 21:56:14 · 1803 阅读 · 0 评论 -
WebSettings用法详解
WebSettings用于管理WebView状态配置,当WebView第一次被创建时,WebView包含着一个默认的配置,这些默认的配置将通过get方法返回,通过WebView中的getSettings方法获得一个WebSettings对象,如果一个WebView被销毁,在WebSettings中所有回调方法将抛出IllegalStateException异常。原创 2019-11-27 21:43:58 · 3460 阅读 · 0 评论 -
Android获取视频的第一帧缩略图(本地视频、网络视频)
Android获取视频的第一帧缩略图(本地视频、网络视频)1、利用 MediaMetadataRetrieve类MediaMetadataRetriever retriever = new MediaMetadataRetriever(); //获取网络视频// retriever.setDataSource(url, new HashMap<String...原创 2019-11-26 21:23:38 · 1249 阅读 · 1 评论 -
ImageView的scaleType的属性理解
看了好多ImageView关于scaleType属性的讲解,但是总感觉有些不太准确,自己试验了一下。做下总结!原创 2019-11-20 20:59:27 · 274 阅读 · 0 评论 -
android相对布局中控件的常用属性
Android布局属性详解 RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHorizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInParent 相对于父元素完全居中 android:layout_al...原创 2019-11-20 20:54:50 · 908 阅读 · 0 评论 -
Android中监听EditText内容变化 两种方式详解
Android中监听EditText内容变化 两种方式详解1、软键盘回车监听事件et_submit.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent...原创 2019-11-14 21:35:45 · 7986 阅读 · 1 评论 -
android中的广播 BroadcastReceiver的简单运用
广播(Broadcast)是一种广泛运用的在应用程序之间传输信息的机制广播(Broadcast) - 用于发送广播; 广播接收器(BroadcastReceiver) - 用于接收广播; 意图(Intent)-用于保存广播相关信息的媒介。原创 2019-11-13 22:15:31 · 269 阅读 · 0 评论 -
Android中Intent用法详解
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的 **Activity / Service**之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。原创 2019-11-11 21:06:29 · 823 阅读 · 0 评论 -
Android GridView使用View.GONE只隐藏内容而不隐藏空间(动态设置LinearLayout宽高)
Android GridView使用View.GONE只隐藏内容而不隐藏空间(动态设置LinearLayout宽高)原创 2019-11-07 21:25:20 · 601 阅读 · 0 评论 -
Android各版本对应的SDK版本,及SDK版本对应JDK版本
Android各版本对应的SDK版本,及SDK版本对应JDK版本原创 2019-11-04 20:59:54 · 3317 阅读 · 0 评论