Android笔记
文章平均质量分 71
Signal_Du
这个作者很懒,什么都没留下…
展开
-
Android普通截屏(不包括状态栏内容无状态栏占位仅包含应用程序)
public static Bitmap normalShot(Activity activity) { View decorView = activity.getWindow().getDecorView(); decorView.setDrawingCacheEnabled(true); decorView.buildDrawingCache()原创 2017-10-31 15:22:30 · 1852 阅读 · 0 评论 -
Android普通截屏(包括状态栏内容)
从 Android 5.0(API 21) 起,开放了截屏录屏的API,使用到的类有MediaProjectionManager、MediaProjection、VirtualDisplay、ImageReader。普通截屏大致步骤① 获取屏幕的长宽高以及densityDpi等,并初始化ImageReader的实例[ 注意获取长宽高的时机 ] ImageReade原创 2017-10-27 10:57:18 · 5074 阅读 · 1 评论 -
Android多线程之AsyncTask
写在前面的话上一篇我们讲到了Android多线程之Handler,即Handler与Thread共同使用进行的多线程编程。但是,Handler模式下,我们需要为每一个任务都创建一个新的线程,任务完成后向UI线程发送消息并在UI线程进行UI的更新。这对于多个任务来说,创建与销毁进程的开销就会很大。从Android1.5开始,提供了AsyncTask,将Handler与原创 2017-10-18 11:37:37 · 487 阅读 · 0 评论 -
如何进行Cause GC且解决Heap updates are NOT ENABLED for this client
打开AndroidStudio自带的Android Device Monitor,切换到DDMS下的heap选项卡,一开始上来是下面这个样子,Heap updates are NOT ENABLED for this client :查了查资料,让我打开Monitor偏好设置里的Heap updates enabled by default :保存上面的设置后,我退原创 2017-09-21 14:11:57 · 1042 阅读 · 0 评论 -
Mac配置AAPT环境变量
前几天用到了AAPT工具,想要查看一个Android包的信息,奈何输入aapt命令后,提示我以下内容:DavidtekiMacBook-Air:~ du$ aapt-bash: aapt: command not found此时需要配置AAPT的环境变量:①打开Terminal,在根目录下输入touch命令:DavidtekiMacBook-Air:~ du$ touch原创 2017-09-11 09:38:44 · 10022 阅读 · 2 评论 -
TextView显示文字(让某一段文字高亮显示)
最近在开发中遇到一个问题:搜索关键字的同时,搜索框下方对应显示搜索结果,同时在每项搜索结果中高亮显示关键字。这里对如何高亮显示关键字进行一下简单的总结:1. 用Html类的fromHtml()方法 textView.setText(Html.fromHtml("hello"));显示结果为:hello2.使用Spannable或实现它的类 Spannab原创 2016-10-24 10:37:55 · 2242 阅读 · 0 评论 -
SpannableString同时设置ClickableSpan和ForegroundColorSpan时ForegroundColorSpan不生效的解决办法
SpannableString同时设置了ClickableSpan和ForegroundColorSpan后,发现ForegroundColorSpan不生效。原因:ClickableSpan将ForegroundColorSpan的颜色覆盖了解决方式:将ForegroundColorSpan替换为UnderlineSpan,并重写updateDrawState方法原创 2017-08-14 21:14:35 · 4629 阅读 · 0 评论 -
从源码看ListView有HeaderView时onItemClick里的position错位的问题
listView = (ListView) findViewById(R.id.test_lv); headerView = LayoutInflater.from(this).inflate(R.layout.activity_position_test_headerview, null); adapter = new ArrayAdapter(this, an原创 2017-08-18 20:34:13 · 1046 阅读 · 0 评论 -
Android普通截屏(不包括状态栏内容但有状态栏占位)
public static Bitmap normalShot(Activity activity) { View decorView = activity.getWindow().getDecorView(); decorView.setDrawingCacheEnabled(true); decorView.buildDrawingCache()原创 2017-10-26 18:03:18 · 731 阅读 · 0 评论 -
WebView中网页点击还在WebView中跳转以及在屏幕上完整显示
webview = (WebView) findViewById(R.id.webview); WebSettings webSettings = webview.getSettings(); webSettings.setJavaScriptEnabled(true); //是否使用WebView内置的放大机制,貌似设置了这条以后下面那条不用设置了 webSettings.set原创 2016-02-24 18:35:05 · 8409 阅读 · 0 评论 -
Android中的内部存储与外部存储
1.运行内存:Memory,用来运行程序,不能用来长期存储数据,一旦断电(关机),内存中所有数据将丢失。2.内部存储:InternalStorage,这里所说的内部存储和我们平时的讲的内部存储是不一样的。内部存储位于系统的一个特殊位置,内部存储中根据不同程序包名生成对应该程序包名的目录,该目录中存储的数据文件只能被该程序访问(不同文件操作模式 访问权限不同)。当程序删除时,内部存储中对应该程序原创 2017-10-25 13:36:39 · 524 阅读 · 0 评论 -
Flowable读取文本文件
public void readText() { final TextView textView = (TextView) findViewById(R.id.textView); final File directory = Environment.getExternalStorageDirectory(); final StringBuffer转载 2017-12-20 19:31:49 · 552 阅读 · 0 评论 -
Android内存泄漏的八种可能及解决方法
Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同时防止未释放的内存把堆栈(heap)挤爆的可能,所以写出来的代码更为安全。不幸的是,在Java中仍存在很多容易导致内存泄漏的逻辑可能(logical leak)。如果不小心,你的Android应用很容易浪费掉未释放的内存,最终导致内存用光的错误抛出(o转载 2017-10-11 20:09:20 · 696 阅读 · 0 评论 -
Android获取虚拟导航键的高度
自从有了全面屏,就有了虚拟按键,我们改如何获取 屏幕的真实高度 以及 虚拟键的高度 呢?之前我们使用的都是下面的方法,但有一个问题就是,在全面屏中,它获取到的高度是不包含下面导航键的高度的: public static int getHeight(Context context) { WindowManager windowManager = (WindowM原创 2017-11-20 17:35:34 · 9461 阅读 · 1 评论 -
Android多线程之HandlerThread
HandlerThread简介HandlerThread继承自Thread,所以本质上HandlerThread是一个线程类。HandlerThread是一种可以使用Handler的Thread。HandlerThread在内部创建了消息队列,外界通过Handler的消息方式来通知HandlerThread执行一个具体的任务。HandlerThread使用原创 2017-12-19 19:38:36 · 556 阅读 · 0 评论 -
Android多线程之IntentService
1. IntentService继承自Servicepublic abstract class IntentService extends Service {2. Service不是一个单独的进程,它和应用程序在同一个进程中A Service is not a separate process. The Service object itself does not imply i原创 2017-12-14 12:23:19 · 404 阅读 · 0 评论 -
Android多线程之Handler
Handler相关概念创建handler的线程,我们约定为handler所在线程。调用handler的线程,可以是handler所在线程,也可以是其他线程,这里我们只讨论在其他线程里调用handler。MessageQueue,用来存储handler进行的两个操作:send 的 Message 和 post 的 Runnable。Looper,用来从MessageQueue原创 2017-10-16 17:06:18 · 564 阅读 · 0 评论 -
ListView的Item中包含Button等导致setOnItemClickListener失效的问题
如果ListView中的Item的View中存在CheckBox、Button等,会导致ListView.setOnItemClickListener失效。原因:如果ListView的Item中有Button或者Checkable的子类控件,那么默认focus是交给了子控件,所以ListView的Item获取不到Focus。解决方法:①把Item中能够获取到focus的控件的f原创 2017-11-17 14:00:50 · 342 阅读 · 0 评论 -
Android UI绘制完成的标志及如何合理地获取屏幕的宽高
当我们需要获取屏幕的宽高时,一般情况是不能再onCreate和onResume方法中获取的,因为这个时候界面还没有绘制完成,大部分情况下获取到的都是0。这里有两个解决方法:一个是重写Activity中的onWindowFocusChanged方法,在onWindowFocusChanged方法中获取,参数hasFocus为true时表示当前Activity获取到了焦点。 @Ove原创 2017-10-25 16:00:35 · 552 阅读 · 0 评论 -
Android获取滑动阈值(系统认为最低的滑动距离)
获取系统认为的最低的滑动距离,即超过这个距离,系统认为这是滑动状态。int touchSlop = ViewConfiguration.get(this).getScaledTouchSlop();原创 2017-08-11 16:04:20 · 6111 阅读 · 0 评论 -
Mac下的AndroidStudio的NDK配置及开发示例
Mac OS 10.11.5AndroidStudio 2.3.2NDK 10Mac下的AndroidStudio的NDK配置及开发示例-----------------------------------------------------------------------------------------------------------一、下载NDK(这个分版本,Win原创 2017-05-12 16:05:51 · 647 阅读 · 0 评论 -
ViewFlipper的使用---自动播放(轮播图)的实现以及多个view进行切换
一、 ViewFlipper的简介 java.lang.Object android.view.View android.view.ViewGroup android.widget.FrameLayout android.widget.ViewAnimator原创 2015-12-18 15:18:09 · 3531 阅读 · 2 评论 -
android多线程编程之AsyncTask与Handler
本期的多线程主题与Android相关,侧重讲解在Android中如何用好多线程,需要你有Java的多线程基础。首先我们思考几个问题,在Android应用中为什么要用多线程?为了解决哪些问题?或者为了实现哪些功能?有哪些好处?请先思考一分钟,再继续往下看。学习而不思考就像吃东西而不嚼,要么无法下咽,要么尝不出味道,同时都会影响消化吸收。控制一下你那脱缰野马一样的好奇心吧,先思考再往下看。转载 2016-06-06 15:08:19 · 433 阅读 · 0 评论 -
关于selector中图片显示的一个小问题
1. 当我把bt_selector.xml文件写成如下形式: 运行时发现无论怎么点击button,图案总是img_default,头疼啊~~~运行时发现无论怎么点击button,图案总是img_default,头疼啊~~~ 2.解决方法:将这行代码放到最下端,即:原创 2016-03-23 15:28:52 · 3132 阅读 · 0 评论 -
getApplicationContext()与Activity.this
1.几种context的返回① getBaseContext() 返回由构造函数指定或setBaseContext()设置的上下文。② getApplicationContext()返回的context是对整个应用来讲的,生命周期是整个应用,只有整个应用销毁,getApplicationContext()才会销毁。③ Activity.this的context 返回当前Activ转载 2016-03-23 12:01:22 · 658 阅读 · 0 评论 -
Android中Touch事件分发机制-关于dispatchTouchEvent等方法的研究
一、相关事件1.与Activity相关的事件:dispatchTouchEvent(分发事件)、onTouchEvent(触摸事件) 2.与ViewGroup相关的事件:dispatchTouchEvent(分发事件)、onInterceptTouchEvent(拦截事件)、onTouchEvent(触摸事件) 3.与View相关的事件:dispatchTouchEvent(分发事件)、onTo原创 2016-03-04 11:19:06 · 2018 阅读 · 0 评论 -
CountDownTimer类与倒计时功能的实现
一、CountDownTimer类先简单讲一讲CountDownTimer类。源码中给出的解释以及小例子为: Schedule a countdown until a time in the future, with regular notifications on intervals along the way. Example of showing a 30 second cou原创 2016-03-15 18:53:00 · 610 阅读 · 0 评论 -
Android中选项菜单optionsMenu的创建及使用---onCreateOptionsMenu()等
一、Android一共有三种形式的菜单: 1.选项菜单(optionsMenu) 2.上下文菜单(ContextMenu) 3.子菜单(subMenu)其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来。二、选项菜单机制2.1 对于Activity,同一时间只能显示和监听一个Menu 对象。 1.pub原创 2015-12-06 18:28:54 · 1631 阅读 · 0 评论 -
Android四种启动模式及其注意事项
一、android四种启动模式的简介 四种启动模式包括standard、singleTask、singleTop、singleInstance 如下图所示,在AndroidManifest.xml文件中配置launchMode 二、standard模式详解普通情况下创建的Activity默认启动模式为standard,即并不用专门去写android:launchMode=”原创 2015-12-31 11:47:31 · 928 阅读 · 0 评论 -
RadioButton的setCheck(true)方法失效的解决方法
一、 最近在使用RadioGroup时,用到了5个RadioButton(RadioButton1-5)。但是使用过程中遇到了以下问题:复现步骤:①点击RadioButton1,将RadioButton1选中; ②将RadioButton1到RadioButton5都使用setCheck(false)设置为未选中状态; ③再次点击RadioButton1(或使用RadioBut原创 2016-12-07 15:00:46 · 4503 阅读 · 0 评论 -
Android Scroller与computeScroll的调用机制关系
本文转自:http://www.linuxidc.com/Linux/2016-01/127276.htm1.Scroller到底是什么?答:Scroller只是个计算器,提供插值计算,让滚动过程具有动画属性,但它并不是UI,也不是辅助UI滑动,反而是单纯地为滑动提供计算。无论从构造方法还是其他方法,以及Scroller的属性可知,其并不会持有View,辅助View转载 2016-12-28 18:13:51 · 681 阅读 · 0 评论 -
AndroidStudio报错-非法字符: '\ufeff'
一、问题 Error:(1, 1) 错误: 非法字符: '\ufeff' Error:(1, 10) 错误: 需要class, interface或enum二、原因 该文件采用的编码方式为UTF-8带BOM的格式。 BOM(Byte Order Mark)是用来标记编码的大小端的,对UTF-8编码并没有用处。但是因为在Windows中是使用BOM来标原创 2016-12-20 18:28:16 · 1023 阅读 · 0 评论 -
Android单位转换(px、sp、dp之间的转换)
import android.content.Context;import android.util.TypedValue;/** * Created by du on 17/7/20. */public class DisplayUtil { /** * px 转为 dip. */ public static int px2dip(Context原创 2017-07-20 11:25:07 · 666 阅读 · 0 评论 -
Android对图片进行高斯模糊
高斯模糊工具类:package com.katherine.du.carddetaildemo;import android.graphics.Bitmap;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.os.Handle原创 2017-06-13 10:22:25 · 393 阅读 · 0 评论 -
Android-将数据写入Excel表格并存储到外部存储中
导出Excel准备工作:①项目右键,点击Open Module Settings,进入Project Structure, 在Modules下的app状态下,右侧选中Depenencies, 点击下方的 + 号,选择Library dependency, 出现搜索框,输入jxl, 我选择的是com.原创 2017-05-16 14:07:01 · 3563 阅读 · 1 评论 -
Android发送系统邮件
①发送邮件需要用到intent.setType("subtype")方法,先说明一下常用的值常用的subtype值如下所示: text/plain(纯文本) text/html(HTML文档) application/xhtml+xml(XHTML文档) image/gif(GIF图像) image/jpeg(JPEG图像)【PHP中为:image原创 2017-05-16 16:12:21 · 935 阅读 · 0 评论 -
Android内存泄露分析简要思路
本文转自:http://blog.csdn.net/ljphhj/article/details/44966023作者:快乐de胖虎工作中遇到挺多需要分析内存泄露问题的情况,现在大致简要写下思路,等之后时间相对比较充裕再进行补充。1.明白内存泄露的判断依据?个人总结为:持续增加,只增不减!理解一下这8个字,配合几个命令和工具来确定一下你的应用是否存在内存泄露问题,这是很转载 2017-04-20 16:31:31 · 329 阅读 · 0 评论 -
Android操作系统各个版本对应的甜点名称
哈哈,今天在讨论Android N为何物时,想到了各个版本对应的甜点名称,在这里记录一下,我画了一个图,在图片中对应找出名称即可,赤果果的吃货啊~~~原创 2017-02-10 18:00:17 · 2525 阅读 · 0 评论 -
Animation的使用
转自:http://www.cnblogs.com/lee0oo0/archive/2012/05/22/2513008.html一、Animations一般分为两大类,一类是渐变的(Tweened):如淡入淡出,旋转,缩放,移动;另一类是Frame-by-Frame,就如电影一般由多张图片按照一定的时间间隔显示。二、Tweened Animations的使用有两种方式转载 2017-01-05 17:44:21 · 592 阅读 · 0 评论 -
Canvas的save和restore
本文转自:http://www.cnblogs.com/xirihanlin/archive/2009/07/24/1530246.html1.在创建新的控件或修改现有的控件时,我们都会涉及到重写控件或View的onDraw方法。 onDraw方法会传入一个Canvas对象,它是你用来绘制控件视觉界面的画布。 2.在onDraw方法里,我们经常会看到调用save转载 2016-12-29 17:34:54 · 420 阅读 · 0 评论