![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
原创文章
Aiden@9
这个作者很懒,什么都没留下…
展开
-
安卓5.0及以上设置水波纹效果
一般的可以点击的条目(listView,RecyclerView…),直接设置背景选择器, 选择器颜色,默认白色,点击灰色,当然根据你的情况自己设置: 为了适配5.0需要在drawable-v21里写另外一个ripple(如下:) 例外:对于不是可以点击的linearLayout等,需要你额外设置可点击和焦点,android:focusable="true"android:cli原创 2017-08-01 16:03:06 · 788 阅读 · 0 评论 -
Glide结合Recyclerview(Listview)实现列表滑动的时候图片不加载,滑动停止的时候加载
首先:glide 的方法,发现有两个方法:Glide.with(context).resumeRequests(); Glide.with(context).pauseRequests(); 根据方法名称不难理解:其中第一个是恢复图片的请求加载,第二个是暂停图片的请求加载。 我们先看RecyclerView的监听: 我们来看看 OnScrollListener 里面的两个方法:onScrol原创 2017-07-03 15:50:26 · 6222 阅读 · 0 评论 -
EditText的password属性值(隐藏密码**)
// 显示为普通文本 pwdEdit.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); // 显示为密码 ** pwdEdit.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);原创 2017-04-26 14:23:23 · 3074 阅读 · 0 评论 -
RecyclerView 记录恢复滚动位置
新出的RecyclerView网上的资料比较少,根据ListView以及参考了一下官方API得出。定义两个成员变量: private int lastPosition = 0; private int lastOffset = 0;记录位置,OnScrollListener,onScrollStateChanged()里添加: View topView = mLayoutManager.getC原创 2017-05-08 16:19:57 · 1157 阅读 · 0 评论 -
把jsonString(为json对象)转为map,循环得到key,value
String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}"; //第一种方式 Map maps = (Map)JSON.parse(str); System.out.println("这个是用JSON类来解析JSON字符串!!!");原创 2017-05-12 17:57:52 · 10466 阅读 · 0 评论 -
Android使用include/merge/ViewStub优化布局
Android开发布局中的include标签、merge标签和ViewStub标签,利用这几个标签,我们可以优化我们的界面布局。 一、使用include标签将可复用的组件抽取出来(引用布局)二、使用merge标签减少布局的嵌套层次(merge相当于framelayout)场景1:布局根结点是FrameLayout且不需要设置background或padding等属性,可以用merge代替。 场景原创 2017-04-06 16:42:03 · 306 阅读 · 0 评论 -
安卓Viewpager加载大量图片的时候卡顿
在viewpager中使用fragment,但是fragment中有大量的图片,所以每次滑动viewpager的时候由于viewpager的预加载机制,它每次都加载两页的数据,所有有时候会卡顿或奔溃,这时候就需要解决 一开始我想的是取消预加载,但是第一太麻烦,第二效果不好,还是会卡顿,所以上网找了一些方法,终于感觉有个不错的,就是用setUserVisibleHint,这是fragment的一个方原创 2017-01-07 14:43:07 · 2077 阅读 · 0 评论 -
eclipse里添加git插件,遇到无法commit错误。
刚刚学习使用分布式版本控制系统,git,分为本地仓库,也能上传到github,开源中国的码云网站管理,非常适合团队协作和自己代码备份。然后git插件安装完就遇到了问题,不能commit项目到本地,每次都提示没有更新,非常恼人,google了一下,网友也有很多解决办法,但是我的commit后弹出的界面和他们都不同,那就无法进行下去了,这个恼人的界面,过了一上午终于解决了,实际是非常小的一个设置问题,可原创 2016-06-04 14:14:56 · 5019 阅读 · 0 评论 -
listview添加headerview需要注意的,listview自定义的item注意的焦点
需要注意的地方: 1、item内如果有button等控件时,在监听listview的onitemclick事件时,焦点会被item内的button、imagebutton等控件抢走,从而导致在listview设置了onitemclick事件后不会被触发。解决方法是在初始化item的时候屏蔽掉其内部button等控件的焦点获取,具体方法可以在自定义item的根控件中调用: setDescend原创 2016-07-11 12:32:55 · 2786 阅读 · 0 评论 -
pullToRefresh的自动刷新,到底自动加载等等问题
进入页面时自己刷新数据://自动刷新 new Handler().postDelayed(new Runnable() { public void run() { ptrl.setRefreshing(); new NewsAsyT(act, mnews, fad, ptrl, cache).exe原创 2016-07-11 15:19:02 · 1248 阅读 · 0 评论 -
Activity的4种启动模式
Activity的启动模式有4种,分别是:standardsingleTopsingleTasksingleInstance设置Activity的启动模式,只需要在AndroidManifest.xml里对应的标签设置Android:launchMode属性,例如:[html] view plain copyactivit原创 2016-07-11 16:40:47 · 282 阅读 · 0 评论 -
解决上传到github报错Successfully created project 'Demo' on GitHub, but initial commit failed:
git原创 2016-08-09 13:29:51 · 6695 阅读 · 0 评论 -
去掉自带actionbar、FEATURE_NO_TITLE遇到的问题
我们很多时候都是自己写一个单独的head代替原生的actionbar,那么就需要让原来的bar消失,那么我们一般都是在activity里的setContentView();方法之前加上一句requestWindowFeature(Window.FEATURE_NO_TITLE);就可以做到,但是在如果你的Activity是继承自AppCompatActivity那么就不起作用了,那么该如何解决呢?原创 2016-09-02 11:50:12 · 585 阅读 · 0 评论 -
arraylist执行remove时注意移除int和Integer的区别
先写一段简单的代码 ArrayList<Integer> col = new ArrayList<Integer>(); System.out.println("Initial size: " + col.size()); for(int i = 0; i < 20; i++) col.add(i + 10);上面这段代码建立一个Interger类型参数的ArrayList.原创 2016-09-24 10:10:24 · 6985 阅读 · 0 评论 -
Android一个好用的更新库
UpdateFun更新库UpdateFun是一个 fir.im 的Android更新下载模块,在 fir.im 上上传自己的APP后接入该库即可实现检查更新下载 用法Step 1在gradle文件中加入下面的依赖: dependencies { compile 'cn.hugeterry.updatefun:updatefun:1.6.0' } Step 2在Applica原创 2016-10-19 19:08:23 · 1273 阅读 · 2 评论 -
如何让EditText不自动获取焦点
在项目中,一进入一个页面, EditText默认就会自动获取焦点。那么如何取消这个默认行为呢?1解决之道:在EditText的父级控件中找一个,设置成Android:focusable=”true” android:focusableInTouchMode=”true”这样,就把EditText默认的行为截断了!<LinearLayout style="@style/Fi原创 2016-11-04 15:02:09 · 426 阅读 · 0 评论 -
JAVA中读取文件转换为字符串
方式一 /**以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。当然也是可以读字符串的。*//* 貌似是说网络环境中比较复杂,每次传过来的字符是定长的,用这种方式?*/public String readString1(){ try { //FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileRe原创 2016-10-19 09:41:10 · 26564 阅读 · 0 评论 -
AndroidStudio多渠道打包,生成不同app
1. 多渠道的概念APP发布到不同的应用平台,监测用户是从哪个平台安装的。2. 为什么要多渠道打包统计用户安装APP来源批量修改生成的apk文件名可更改包名生成不同应用名称或图标 有的时候你会在不同平台看到XX-小米版,XX-魅族版等等,或者beta版的图标和正式的不一样,其实代码还是那个代码,无非做点小小的改动 3.多渠道怎么打包呢一般是通过gradle来实现原创 2017-08-22 14:50:34 · 14916 阅读 · 3 评论 -
ScrollView嵌套RecyclerView滑动粘黏
使用ScrollView嵌套RecyclerView时容易出现和listview很像的问题,显示不全,滑动粘黏感觉。解决办法最简单的是使用NestedScrollView <android.support.v4.widget.NestedScrollView android:id="@+id/scrollView" android:layout_width="ma原创 2017-09-04 15:35:17 · 376 阅读 · 0 评论 -
MMKV替代sp,封装的工具类(kotlin)
使用MMKV替代SharedPreferences,好处:MMKV是微信应用程序中使用的一种高效、小巧、易用的移动键值存储框架。目前在iOS、macOS、Android和Windows上都可以使用。一、在app的build.gradle中引入 implementation 'com.tencent:mmkv:1.0.19'二、在application里初始化 M...原创 2019-05-17 16:31:36 · 4770 阅读 · 0 评论 -
图片加载引擎框架封装
一、新建接口编写加载方式public interface IImageLoader { void load(@NonNull ImageView imageView, @NonNull Object imageUrl); void load(@NonNull ImageView imageView, @NonNull Object imageUrl,int width, int ...原创 2019-05-16 18:05:57 · 352 阅读 · 0 评论 -
Android 全局弹出对话框
方案一 :使用系统弹窗权限1.1 .先加权限<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />1.2 创建alertDialog时候设置类型为 alertDialog.getWindow().setType(WindowManager.LayoutParams.TYP...原创 2019-05-16 10:44:30 · 2861 阅读 · 0 评论 -
Android软键盘(输入法)隐藏问题
有时候,需要强制隐藏Android输入法键盘,如当前键盘正在显示,这个时候点击了侧滑面板,就要强制隐藏输入法键盘。网上常见的方法有:1、 InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(...原创 2019-05-10 11:21:46 · 960 阅读 · 0 评论 -
androidStudio去除无用、多余、未引用、未关联的资源的方式
我们知道,当版本经过多次迭代,项目中多多少少会存在一些无用的资源,不仅会造成我们打包的APK体积过大,还会造成项目资源的冗余,下面说说如何找到清除这些无用资源。1. 打包时去除无用的资源buildTypes { debug { versionNameSuffix "_debug" //versionName的后缀 minify...原创 2019-05-07 16:34:08 · 7268 阅读 · 2 评论 -
lint检查会报警告信息:(onTouchListener warning: onTouch should call View#performClick when a click is detecte
lint检查会报警告信息:(onTouchListener warning: onTouch should call View#performClick when a click is detected)–>onTouch在不执行touch时候应该断掉view的touch事件错误使用:findViewById(R.id.fl_container).setOnTouchListener(n...原创 2019-05-07 15:33:01 · 1050 阅读 · 0 评论 -
首次进入app,退到桌面在进入会重启启动页问题(首次装app,点击推送会重启app)
在launch活动页面的onCreate()方法的setContentView()方法前面添加if (!this.isTaskRoot()) { Intent mainIntent = getIntent(); String action = mainIntent.getAction(); if (mainIntent...原创 2019-01-29 10:20:05 · 1178 阅读 · 0 评论 -
优化大量图片加载recyclerview列表的滑动效果
通用的几种方式viewHolder复用机制图片异步加载、缓存、压缩(使用glide等解决,最好后台反2套:缩略图和原图)根据滑动状态处理加载情况这里就主要处理:1.如果在滑动的过程中且没没被加载过,那么就不加载2.(加载)2.1在滑动的过程中且加载过2.2不在滑动中主要是监听列表滚动,把状态传入adapter中,然后设置图片bean的是否加载过状态,然后根据图片状态和滑动状态确定是否...原创 2019-01-23 11:32:02 · 5090 阅读 · 0 评论 -
自定义notification点击跳到web或者指定页面,回退到main页面
重要的就是添加回退栈TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); // 添加返回栈 stackBuilder.addParentStack(WebCommonActivity.class); // 添加Intent到栈顶 stackBuilder.addNextI...原创 2018-07-26 14:49:05 · 1027 阅读 · 0 评论 -
bugly热更新、多渠道集成及加固问题
Bugly Android热更新使用指南–》大部分步骤按照文档即可:官方文档========================================================================= 第一步:添加插件依赖 工程根目录下“build.gradle”文件中添加: ===========================================...原创 2018-05-16 23:21:35 · 1605 阅读 · 0 评论 -
安卓全面屏适配方法
随着越来越多的全面屏手机的发布,尤其是千元机也上了所谓的全面屏,即18:9广义的全面屏,还有一些异形屏幕-刘海屏幕,我们也要加快适配,不然就出现拉伸变形的启动图怪像。 适配方法: 1.在应用配置文件AndroidManifest.xml中显式声明支持的最大屏幕高宽比(maximum aspect ratio)。其中 ratio_float 为高宽比: 传统屏幕:ratio_float = 1...原创 2018-04-08 14:54:19 · 9198 阅读 · 1 评论 -
The specified child already has a parent错误(子只能有一个父)
错误信息:java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.原创 2017-11-09 15:15:04 · 6514 阅读 · 0 评论 -
Android常用内存泄漏学习
java gc概念: 在大部分虚拟机(包括Android的ART)中,Java都采用了“可达性分析”算法来进行内存回收,原理是:会有几个引用作为root节点,对于任意对象来说,如果从root层层遍历,如果找不到对于他的引用链,那么这个对象就被标记为无用,就会在gc时被销毁。 何为泄漏 内存泄漏,即部分对象虽然已经不再使用,但是因为有root持有引用,所以并没有被销毁,所占用的内存一直没有被释放原创 2017-09-22 10:27:43 · 264 阅读 · 0 评论 -
Android 本地服务通知
服务代码:public class NotificationService extends Service { // 获取消息线程 private MessageThread messageThread = null; // 点击查看 private Intent messageIntent = null; private PendingIntent messa原创 2017-09-20 12:24:16 · 2379 阅读 · 0 评论 -
Android 在进程中重启app的方法
方法一 利用PackageManager类Intent i = getBaseContext().getPackageManager() .getLaunchIntentForPackage( getBaseContext().getPackageName() );i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActi原创 2017-09-10 22:44:44 · 4288 阅读 · 0 评论 -
textView开头空两格问题,排版缩进2个汉字
一般为了排版,textView中字符段落开头一般都会空两格显示,如下图但是如果你靠敲击空格来解决那就错了,那样在不同的屏幕上显示会差异,完美的解决方法是用转义字符”\t“,在段首加\t\t就解决。加两个\t\t是表示缩进一个汉字,两个汉字就是\t\t\t\t原创 2016-11-09 18:27:06 · 16652 阅读 · 0 评论 -
共用fragment共用adapter
共用fragment可以在所使用的fragment里成员变量private int TYPE; Context context; 生成构造方法public Fragment_ticket(int TYPE, Context context) { this.TYPE = TYPE; this.context = context; } 就可以在ac原创 2016-11-09 22:37:41 · 1043 阅读 · 0 评论 -
点击listView条目,给点中条目加上上下边框(变换背景),item布局控件的点击事件
1–>点击listView条目,给条目加上上下边框,如图: deliveryAddAdapter.setSelectIndex(position); deliveryAddAdapter.notifyDataSetInvalidated(); deliveryAddAdapter.notifyDataSetChanged();前提是在adapter设置成员变量,且生成set方法,private原创 2016-11-09 22:55:23 · 1219 阅读 · 0 评论 -
安卓跳转时自定义标识it.setFlags()问题
安卓跳转时自定义标识it.setFlags(num);当num数字过大时会造成新打开活动和app不在同一个task内。原创 2017-02-08 19:33:06 · 320 阅读 · 0 评论 -
安卓当前页面不自动弹出输入法
act.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);原创 2017-02-09 13:48:30 · 1105 阅读 · 0 评论 -
Android 折叠toolbar CollapsingToolbarLayout
展开时如图 上滑时 折叠后 Android Support Library 中提供的CollapseToolbar实现这效果. 需要gradle引用包即可compile 'com.android.support:design:25.0.0'<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.C原创 2017-02-17 15:45:03 · 754 阅读 · 0 评论