
andorid
夏洛克的猫
个人博客 http://blog.youkuaiyun.com/u012045061
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android super.img 镜像解包
简介在 Android 10 及更高版本上支持了"动态分区",所以 ROM 包中看不到了传统的 system.img 等镜像。支持的动态分区包括:SystemVendorProductSystem ExtODM所以在 super.img 都可能包括以上分区的镜像文件。具体信息可以查看官方文档 动态分区具体解包步骤super.img 的解包必须两个工具 simg2img 和 lpunpack。其中 simg2img 可以在线安装,执行命令后可以按照提示自行安装即可。lpunpack 需原创 2021-08-07 17:15:21 · 12251 阅读 · 6 评论 -
Android 自定义 Lint 调试
1. 点击 Edit Configurations2. 点击 + 号 Add New Configuration 按钮3. 选择 Remote4. 没有特别情况,可以直接采用默认模板,填写配置名称即可,这里以 LintDebug 举例5. 选择创建的 Remote 的配置, LintDebug6. 在编写好的 Lint 检查规则里,打好需要调式的断点。在 Teminal 窗口下执行以下命令./gradlew --no-daemon -Dorg.gradle.debug=true :ap原创 2021-01-21 17:03:51 · 738 阅读 · 2 评论 -
在 Andorid 中为什么要避免「内存抖动」?
内存抖动是指内存频繁的分配和回收,占用内存忽高忽低,内存占用图形上呈现锯齿状在 Android 开发过程中,你一定听说过「内存抖动」这个词,别人肯定也告诫过你要避免内存抖动,但是为什么呢?但是其实初步想,为什么要避免内存抖动呢?频繁创建对象,被 Java 虚拟机的回收机制自动回收了,这不是挺好的吗?开发者为什么还需要关心这个问题呢?下面讲一下原因1.频繁 GC 会导致卡顿在传统的 G...原创 2020-05-08 10:29:05 · 387 阅读 · 0 评论 -
Android 代码规范(自用)
java成员类基础类型优先排在上方java相关类排在基础类型下方android相关类排在java相关类下方整体排序按照访问权限:private->default->protected->public 由低到高排序以上的模块间以一个空行隔开所有成员类命名均以小写m开头,采用驼峰命名静态成员变量放在以上模块最上方封装的bean类成员变量不需要以小写字母m开头,采用驼峰命名即可类方法a原创 2017-01-23 15:13:08 · 426 阅读 · 0 评论 -
图片库的封装
关于图片库的封装相关的文章早已经看到过.图片库的封装可以使得调用者不知道,底层的具体实现,即使我们换了图片加载库,上层处的代码感知不到无需修改.如果不做封装的话,像下面这样直接使用的话: Glide.with(iv.getContext()) .load(carSeries.getPicurl()) .placeholder(R.dra原创 2017-03-29 09:37:34 · 477 阅读 · 0 评论 -
利用 CollapsingToolbarLayout 完成联动的动画效果
最近项目中需要实现个动画效果,研究了下这里做下简单的分享.效果图如下:最初的想法是自己去利用 Android 的嵌套滚动机制,去实现上面的嵌套滚动效果.但最后为了开发效率直接利用了 CollapsingToolbarLayout 和 CoordinatorLayout 的效果. 实现效果的原理十分简单,监听 CollapsingToolbarLayout 收缩和扩展的距离,换算成你想要的一个范原创 2017-04-07 16:27:00 · 6704 阅读 · 4 评论 -
Android 5.0 Button 按钮水纹效果的适配问题
从5.0开始,一些控件的点击时候默认是有水纹效果的如下图以Button举例可以按照如下使用: 注意是android:theme<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" andr...原创 2016-03-24 17:28:17 · 10425 阅读 · 4 评论 -
Material Design Button 的 disable 效果
针对 Material Design Button 的 disable 效果这里提一下. 我们经常有这样的需要,在按钮在 disable 状态下,背景色会呈现深色提醒用户不可点击. 但是目前,如果你像下面这样设置, disable 状态下背景色是没有什么变化的. <style name="BlueButton"> <item name="android:layout_h原创 2017-03-05 21:08:57 · 1531 阅读 · 0 评论 -
杂记
1.EditText自动获取焦点弹出软键盘 为了防止上述情况,可以在其父级控件中添加如下属性: android:focusable="true" android:focusableInTouchMode="true" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/a原创 2016-03-18 11:18:51 · 412 阅读 · 0 评论 -
关于 CheckBox 你或许不知道的一些知识点
CheckBox 的默认效果是文字在右边,如下所示但是我们经常是有文字在左边的需求.可以按照下面的方式进行处理 <CheckBox android:text="CheckBox" android:layout_width="wrap_content" android:layout_height="wrap_content" androi原创 2017-01-07 17:09:49 · 1403 阅读 · 0 评论 -
SwipeLayout一个展示条目底层菜单的侧滑控件
由于项目上的需要侧滑条目展示收藏按钮,记得之前代码家有写过一个厉害的开源控件 AndroidSwipeLayout 本来准备直接拿来使用,但是看过 issue 发现现在有不少使用者反应有不少的 bug ,而且代码家现在貌似也不进行维护了.故自己实现了一个所要效果的一个控件.因为只是实现我需要的效果,所以大家也能看到,代码里有不少地方我是写死的.希望对大家有些帮助.而且暂时也不需要 Android原创 2016-12-06 09:23:02 · 626 阅读 · 1 评论 -
关于友盟分享的小问题
目前碰到一个问题是这样的:将友盟分享作为一个工程依赖的方式引入项目中,而你的的工程项目中如果有同名的资源文件,就有可能如下问题(找不到引用id) 项目中的布局文件 友盟中的同名布局文件 出现的这个问题原因尚不太清楚,这里先记录下来,帮助大家排查类似的问题原创 2016-02-16 10:28:41 · 793 阅读 · 0 评论 -
SwipeCardView有点类似于stackview的控件
业余时间写了一个类似stackview的控件,可以循环抽取.还不是很完善,算是给有需要的朋友提供个基本思路吧.有更好的建议请告知.github地址:https://github.com/X-FAN/SwipeCardView先上效果图源码作了简单注释public class SwipeCardView extends ViewGroup { private int mInitX = 0;//最原创 2016-11-01 10:47:54 · 1389 阅读 · 0 评论 -
FragmentPagerAdapter 滑动过后界面不显示的解决方案
最近工作中UI给出如图设计,心里这个结合viewpager,fragment,FragmentPagerAdapter就能构建出来.说干就干,写出如下代码(部分代码省略) @Override public Fragment getItem(int position) { AllNewsFragment result = null; Bundle bundle原创 2016-09-30 17:29:20 · 1949 阅读 · 0 评论 -
一个简单的ReactNative demo
本人非前端,请轻喷 ReactNative版本:0.31 github:https://github.com/X-FAN/reactnativelearn代码做了一些简单的注释,下面是源码import React, { Component} from 'react';import { AppRegistry, Navigator, ToastAndro原创 2016-08-24 15:42:09 · 1673 阅读 · 0 评论 -
toolbar setTitle 无效的解决方法
在项目中,根据文档按如下设置标题mToolbar = (Toolbar) findViewById(R.id.toolbar);mToolbar.setTitle("test")setSupportActionBar(mToolbar);发现toolbar标题并未被设置,后改成如下才达到效果getSupportActionBar().setTitle("test")但其中原因,并未分析清楚,若有原创 2016-01-13 17:27:00 · 4231 阅读 · 3 评论 -
结合 MultiType 实现加载更多
MultiType 是一个分发管理类,帮助我们轻松实现复杂布局.建议大家阅读源码,作者的思路并不复杂但很巧妙.下面附上主要源码:public class LoadMoreDelegate { private Items mItems; private MultiTypeAdapter mMultiTypeAdapter; private OnLoadMoreListener mO原创 2017-03-31 16:21:02 · 1506 阅读 · 1 评论 -
android界面背景键盘弹起被压缩
android键盘弹起时,若界面设置了背景图有被压缩的情况.如果的界面布局采用了ScrollView可以设置属性android:scrollbars=”horizontal”,或者在manifest文件中设置 android:windowSoftInputMode=”adjustPan|stateHidden” ,这样图片背景就不会被压缩变形,但是图片仍会被稍稍整体推上去的效果.原创 2016-09-18 10:21:48 · 2731 阅读 · 0 评论 -
Android 版本速查表
平台版本Api 级别VERSION_CODEAndroid 8.127O_MR1Android 8.026OAndroid 7.024NAndroid 6.023MAndroid 5.122LOLLIPOP_MR1Android 5.021LOLLIPOPAndroid 4.4W20KITKAT_WATCH...原创 2019-08-09 14:26:35 · 398 阅读 · 0 评论 -
Glide 如何实现正确加载图片而没有错位
我们在平时的项目使用下面的代码 GlideApp .with(context) .load(url) .into(imageView);当我们在常见的列表界面中(如 recycleview 实现的列表),使用上面的代码,在我们快速滑动中,glide 是如何实现正确加载图片,而没有导致图片内容...原创 2018-08-26 18:41:34 · 2425 阅读 · 0 评论 -
android:excludeFromRecents 属性需要注意的小地方
在 Android 系统中,如果我们不想某个 Activity 出现在 “Recent screes” 中,可以设置属性 android:excludeFromRecents 为 true。其中有些需要注意到的地方说明下。android:excludeFromRecents 属性并不会仅仅影响被设置的 Activity。由此该 Activity 启动的后续同属一个 “Task” 的一系列 ...原创 2018-06-12 22:39:59 · 2400 阅读 · 0 评论 -
安卓属性动画小技巧
首先,最重要的一点也是务必要记住的一点 view 的 getX() getY()方法取得的是以父 view 为参考系的相对坐标很多人第一次看到 view 的 getX getY 方法以为是取得相对于整个屏幕上的坐标,很容易在写一些动画效果出现不是预期的效果。以 getX 方法举例方法的定义如下: /** *返回的是该 view 的视觉上的 x 轴坐标值...原创 2018-04-15 14:28:09 · 323 阅读 · 0 评论 -
adb 常用命令
这个命令会打印出一些概览信息,如获得的权限。原创 2017-09-18 14:11:00 · 1028 阅读 · 0 评论 -
Android 中 getString() 方法的小知识点
最近经常看到为了获取类似如下的字符串hello %s采用下面的代码String formatStr = String.format(getString(R.string.test), "Android");其实 Android 中 Activity ,Fragment 等中其实已经给我封装了更简便的方法,我们可以直接采用如下方法String原创 2017-10-21 21:07:21 · 8341 阅读 · 1 评论 -
关于通知的一些小问题
最近做下载,有一个通知显示进度的需求。这个过程中碰到一些问题,这里总结下,方便大家排查。1.通知中下载完成后,进度条没有正确关闭掉。我们先看官网教程中显示通知的代码:int id = 1;...mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);mBuilde原创 2017-08-06 12:52:29 · 560 阅读 · 0 评论 -
一个可以在界面顶部展现的自定义 View
这个源码十分简单,没啥可说的.只有一点提一下,看到有些控件达到背景色的效果,是动态填加一个带背景色父布局实现的.我这里是在画布上动态绘制的.GitHub 地址: TranslationView源码如下:public class TranslationView extends FrameLayout { private static final String TAG = "Translation原创 2017-02-14 17:47:48 · 483 阅读 · 0 评论 -
一个简单的图片选择器
ImagePicker 一个简单的图片选择器。为了配合头像选择,写了一个简单的功能。自己写图片选择器的目的也是不言而喻的,使界面风格保持整体的一致性。虽然可以用系统的相册和裁剪功能,但各种系统的界面风格不统一,和自身 app 界面也很难统一。所以使用自己的图片选择界面还是很有必要的。第三方的图片选择器有很多,而且很强大。但是有时候我们并不需要这么多功能,写一个自己的所需的最小功能一定程度上可以缩减整原创 2017-06-16 09:13:05 · 454 阅读 · 0 评论 -
android 圆角图片的实现和封装
最近被人问起圆角图片的实现,花了一点时间鼓捣了下,下面简单分享下。完整例子: RoundImage先上效果图全部圆角: 顶部为圆角: 底部为圆角: 只有左上角为圆角: 下面为主要源码,实现了 Picasso 中的 Transformation 接口。public class RoundCornersTransformation implements Transformation { p原创 2017-04-18 11:57:29 · 1966 阅读 · 0 评论 -
androidstudio 自动生成一些模板注释
之前在 Android代码规范(自用) 提到给新建的类注明作者和创建时间等简要信息,这里提下针对不同场景下一些简便的生成方法。普通类文件在 andoridstudio 设置目录下 File and Coede Templates 选项作如上配置,新建一般类文件后,便在顶部有自动的模板注释。Activity以 Activity 为例,这个需要修改 Activity 的模板文件,在 androidstu原创 2017-05-04 17:04:44 · 4639 阅读 · 2 评论 -
AutoScrollTopBottomView
这个自定义控件是用来展示底层view的,当顶层的view滑动到底层view的中间时,顶层view会自动滚动到底层view的顶部或者底部,顶层view可以是scrollview,listview等. 希望对大家有帮助.github地址:https://github.com/X-FAN/AutoScrollTopBottomView下面附上源码,代码思路很简单利用Scroller进行滚动处理.publi原创 2016-07-11 11:01:40 · 408 阅读 · 0 评论 -
用path画一个抽象的树叶
源码地址:https://github.com/X-FAN/LeafViewpublic class PathTestView extends View { private int mWidth; private int mHeight; private int mDuration = 5000; private int mState = 0;//当前状态;原创 2016-09-06 15:46:01 · 751 阅读 · 0 评论 -
PullBezierZoomView 一个具有贝塞尔曲线下拉效果的自定义view
该控件效果基于PullZoomView源码改动的而来,感谢Frank-Zhu的开源代码.该控件具有下拉放大背景图和贝塞尔曲线的效果.github:https://github.com/X-FAN/PullBezierZoomView 欢迎star我主要写了一个自定义的贝塞尔曲线的效果的控件并整合到了Frank-Zhu的项目中的一个子项中.这里面有个小数学知识的求解,因为效果要贝赛尔曲线的曲线顶点要恰原创 2016-09-13 14:45:02 · 906 阅读 · 1 评论 -
SwipeRefreshLayout和RecyclerView使用的小问题
SwipeRefreshLayout是官方提供的下拉刷新控件,在使用过程碰到一些小问题和大家分享下. 下面的代码只能监听下拉手势所引发的事件 mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public v原创 2016-01-14 14:17:10 · 1114 阅读 · 0 评论 -
关于主线程中自动建立的Looper的思考:主线程中Looper中的轮询死循环为何没有阻塞主线程
Android中UI线程会自动给我们建立一个looper,但是looper中的loop方法是个死循环.为什么我们在UI线程中写的代码为何都能顺利执行?为什么没有引起ANR呢? Looper的部分源码: /** * Initialize the current thread as a looper, marking it as an * application's main原创 2016-02-08 12:32:42 · 3179 阅读 · 0 评论 -
Android-PullToRefresh onRefreshComplete()失效问题
Android-PullToRefresh使用setRefreshing(true)出发刷新后,如果立即调用onRefreshComplete(),下拉刷新的进度状态并不会消失,一直处于刷新状态.可能是这个库的一个bug,还没有仔细研究代码.下面提供一个简单的解决办法,就是延迟调用onRefreshComplete(),如下: myHandler.postDelayed(new Runnabl原创 2016-01-28 16:18:21 · 3122 阅读 · 0 评论 -
关于fragment的getActivity()返回null的处理
在fragment的使用中经常要使用getActivity获取依附的activity,但在某些情况下回返回null,如果不加处理可能会因空指针异常导致程序崩溃.所以建议每次使用getActivity方法都需检查一下.isAdd(){//这里进行你想要的操作getActivity()}或者if(getActivity()!=null){//这里进行你想要的操作}注:isAdd()是fragm原创 2015-12-07 11:16:48 · 1121 阅读 · 0 评论 -
OkHttp关于https请求的设置
https请求由于证书验证问题,直接请求一般都会失败.一般是做证书验证处理或者忽略证书验证,这里介绍后者.解决方案从外文文章中看到,这里搬砖一下.希望对大家有帮助 public static OkHttpClient getUnsafeOkHttpClient() { try { // Create a trust manager that does not原创 2015-12-08 14:23:53 · 15250 阅读 · 1 评论 -
CollapsingToolbarLayout中Toolbar不跟随ListView扩展
要想Toolbar跟随Listview的滑动扩展或者是收缩这中联动效果,需要在ListView中配置如下属性: android:nestedScrollingEnabled=”true” <ListView android:id="@+id/station_show" android:layout_width="原创 2016-01-08 09:55:41 · 2345 阅读 · 2 评论 -
include标签使用的小问题
使用include标签可以避免布局中重复代码,但是目前碰到个小问题说明一下,避免大家入坑. <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_pare原创 2016-01-07 11:10:15 · 837 阅读 · 0 评论 -
Android-PullToRefresh自动加载更多
Android-PullToRefresh(github地址)是个十分方便的下拉刷新库(也有上拉加载的功能),各个app中常见到滑到底部自动加载的功能,这里提供一个简单的实现思路: <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com原创 2015-12-22 15:21:31 · 3347 阅读 · 0 评论