android
文章平均质量分 70
郝三旭
这个作者很懒,什么都没留下…
展开
-
Canvas 的使用
前言Canvas 本意是画布的意思,然而将它理解为绘制工具一点也不为过。通过 Canvas 提供的 API,你可以在画布上绘制出绝大部分图形,再配合上一些操作画布的 API,比如旋转剪裁等变换画布的操作,就能够巧妙地画出更加复杂的图形。drawXXX系列canvas.drawArc 方法: drawArc(RectF oval, float startAngle, flo...转载 2018-11-16 10:43:42 · 439 阅读 · 0 评论 -
IT蓝豹,Android炫酷效果源码
http://itlanbao.com/codes.aspx#44,0原创 2017-07-20 17:04:33 · 2034 阅读 · 0 评论 -
Android适配方案小结(二)
该节主要记录从代码中获取与屏幕适配相关的各个参数:Java代码如下1234567891011121314151617181920212223242526原创 2017-06-14 17:33:11 · 189 阅读 · 0 评论 -
Android 如何解决dialog弹出时无法捕捉Activity的back事件
当有dialog弹出的时候,系统的返回键失效,在dispatchkeyevent()中 keycode == KECODE_BACK时候,不会进行操作解决办法如下: 1)重写onKeyDown或者onKeyUp方法 2)重写onBackPressed方法 3)重写dispatchKeyEvent方法这三种办法有什么区别在这里不进行阐述,有兴趣的朋原创 2017-06-22 16:30:21 · 742 阅读 · 0 评论 -
【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
http://www.cnblogs.com/yyangblog/p/6249715.html原创 2017-06-30 16:52:15 · 212 阅读 · 0 评论 -
Android 捕获异常上传
在Android应用程序开发中,不可避免的会出现异常,我们应该如何快速的在开发阶段捕获异常进行处理呢?在Java线程类中,可以在线程中捕捉未处理异常,本文我们详细介绍。APP开发出现异常在所难名,甚至会导致应用程序崩溃。如果在debug模式下开发的时候,是可以通过查看logcat日志来查看异常消息,从而进行处理。但是,如果我们在发布版本之后,用户在使用的时候crash掉了,就无法查原创 2017-06-16 13:20:44 · 627 阅读 · 0 评论 -
Android Handler 消息机制(解惑篇)
概述大家对于Android中的消息处理机制的用法一定都比较熟悉,至于工作原理估计不少人有研究。就像我们自己写的类我们用起来比较熟悉一样,如果我们熟悉了消息处理机制的具体实现,那么我们用起来肯定也会事半功倍。博主之前只是稍有涉猎,对其中一些地方也还心存疑虑,比如既然Looper.loop()里是一个死循环,那它会不会很消耗CPU呢?死循环阻塞了线程,那我们其他的事务是如何被处理的呢?转载 2017-06-05 17:31:43 · 284 阅读 · 0 评论 -
Android View 的工作原理
一、基础知识1、ViewRoot 和 DecorViewViewRoot 对应 ViewRootImpl 类,它是连接 WindowManager 和 DecorView 的纽带,View 的三大流程都是通过 ViewRoot 来完成的。在ActivityThread 中,当 Activity 对象被创建完毕后,会将 DecorView 添加到 Window 中,同时会创建 Vie原创 2017-06-05 15:57:26 · 278 阅读 · 0 评论 -
Android App的工作原理
Android App的工作原理Android系统是基于liunx内核的,但是与传统的基于liunx的pc系统不同,用户对Android app没有绝对的掌控权。pc系统中,在应用程序的系统菜单上选择“退出”或者“关闭”之类的选项会直接杀死进程。在Android系统中不是这样的。而是由系统,当系统需要释放内存来运行新进程或者保证某些后台进程和前端进程顺利执行的时候才会释放相应应用程序的原创 2017-06-05 15:34:01 · 4497 阅读 · 0 评论 -
Android快速理解Activity、View及Window&WindowManager之间关系
基本概念描述:1.Activity用户最直接接触到的,Activity维护应用程序的生命周期,它依赖于Window2.Window表示一个窗口的概念,类似360悬浮窗的东西就需要Window来实现。依赖于WindowManager,同时绘制View(DecorView)3.WindowManager用于添加,移除Window对象,如无法直接访问Window,对Window的转载 2017-06-05 15:31:34 · 355 阅读 · 0 评论 -
在子线程中new Handler报错--Can't create handler inside thread that has not called Looper.prepare()
在子线程中new一个Handler为什么会报以下错误?java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 这是因为Handler对象与其调用者在同一线程中,如果在Handler中设置了延时操作,则调用线程也会堵塞。每个Handl原创 2017-06-16 12:41:45 · 258 阅读 · 0 评论 -
Android--Matrix图片变换处理
前言 本篇博客主要讲解一下如何处理对一个Bitmap对象进行处理,包括:缩放、旋转、位移、倾斜等。在最后将以一个简单的Demo来演示图片特效的变换。 本篇博客的主要内容:MatrixMatrix缩放Matrix旋转Matrix位移Matrix倾斜Matrix变换注意事项Matrix完整的Demo Matrix 对于一个图片变换的处理,需要Matrix类的支持,它转载 2017-05-19 10:03:36 · 230 阅读 · 0 评论 -
Java的反射详解
反射转载 2017-05-17 17:05:13 · 415 阅读 · 0 评论 -
从android应用程序跳转到系统的各个设置页面
在android SDK文档中有这样一个类,android.provider.Settings类提供android系统各个页面的跳转常量:使用实例例:startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)),即可跳到android手机网络设置页面。 如果要launch Mobile Networks原创 2017-05-05 17:36:02 · 410 阅读 · 0 评论 -
ListView的item中内部点击事件的传递
在一般的情况下ListView的点击事件只需要的在Activity中设置一个onItemClickListener()方法。但是遇到item里面的按钮、图片、文字、需要点击的时候,就需要把点击事件从Adapter中传到Activity中 首先创建一个接口public interface Callback { public void click(View view);}1231转载 2017-03-30 15:25:05 · 682 阅读 · 0 评论 -
Android 保存List数据(SharedPreferences)
一、简介 存储List数据到本地的方式有很多种,对于不想用sqlite或者其他方式,又或是数据量很少的话,不妨可以试下用 SharedPreferences保存。由于SharedPreferences只能保存Map型的数据,必须要做其他转换才行。二、应用场景 用于保存各种List数据,最常见的莫过于,ListView、Gridvi转载 2017-03-29 13:25:49 · 1425 阅读 · 0 评论 -
viewpager 打开界面一直弹出软键盘
1)当在某个页面输入信息时弹出软键盘,使用ViewPager切换页面时,软键盘依旧存在。解决方法:1、定义两个变量 private InputMethodManager manager; private View currentFocus; 2、在onCreate中初始化manager m原创 2017-07-21 13:48:43 · 537 阅读 · 0 评论 -
Handler在锁屏状态下进入睡眠状态
我在服务里发了一个请求,在handler中更新ListVIew中的界面会失败,hanldeMessage不会走,但是在静态handler中可以更新UI。如何在锁屏状态乃至系统进入休眠后,仍然保持系统的网络状态以及通过程序唤醒手机呢?答案就是Android中的WakeLock机制。 官方对于WakeLock的解释: PowerManager:This cl原创 2017-07-19 16:50:44 · 4338 阅读 · 0 评论 -
安卓手机连接蓝牙打印机实现打印功能
最近在做一个安卓应用,其中有一个需求是要求用蓝牙连接打印机实现打印功能。一开始没有一点头绪,网上找了很多资料也找不到有用的数据。所以自己就去研究,最终,功夫不负有心人,顺利的完成了这个功能。下边贴出我写的代码,共有需要的IT哥们参考学习。完整源码下载我们先看看运行效果图吧。。。1.这是主界面的效果图贴上布局文件的代码:bluetooth_la转载 2017-08-03 11:43:08 · 4223 阅读 · 3 评论 -
RadioGroup调用check()方法onCheckedChanged()调用多次,改为radiobutton.toggle
布局文件activity_main.xml如下:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" ...原创 2018-06-29 14:53:55 · 1317 阅读 · 0 评论 -
Caught a RuntimeException from the binder stub implementation.
08-25 11:51:59.630 29087-9866/me.aber.app.arrayapdapterdemoD/dalvikvm? GC_FOR_ALLOC freed 2055K, 52% free 7378K/15192K, paused 24ms, total 30ms08-25 11:52:01.923 29087-9866/me.aber.app.arrayapda...原创 2018-05-09 10:58:11 · 4936 阅读 · 1 评论 -
Android 友盟多渠道打包
目前项目中使用到了多渠道打包的功能,首先理解多渠道打包,渠道可理解成安卓apk应用市场平台,所以多渠道打包可以理解成在打包多个应用市场的apk,要在每个应用市场上打包一个安卓Apk,这样好处是可以在查看apk在每个安卓市场的下载量,活跃度,便于公司进行重点运营和推广,因为友盟多渠道统计比较成熟,所以公司采用的是友盟的多渠道打包统计;1.在清单文件里加入下面代码:<meta-data and...原创 2018-02-11 14:52:16 · 270 阅读 · 0 评论 -
友盟多渠道打包
目前项目中使用到了多渠道打包的功能,首先理解多渠道打包,渠道可理解成安卓apk应用市场平台,所以多渠道打包可以理解成在打包多个应用市场的apk,要在每个应用市场上打包一个安卓Apk,这样好处是可以在查看apk在每个安卓市场的下载量,活跃度,便于公司进行重点运营和推广,因为友盟多渠道统计比较成熟,所以公司采用的是友盟的多渠道打包统计;多渠道打包的步骤: 以友盟的渠道统计为例,渠道信息一般在 Andr...原创 2018-02-11 09:07:16 · 168 阅读 · 0 评论 -
友盟多渠道打包
目前项目中使用到了多渠道打包的功能,首先理解多渠道打包,渠道可理解成安卓apk应用市场平台,所以多渠道打包可以理解成在打包多个应用市场的apk,要在每个应用市场上打包一个安卓Apk,这样好处是可以在查看apk在每个安卓市场的下载量,活跃度,便于公司进行重点运营和推广,因为友盟多渠道统计比较成熟,所以公司采用的是友盟的多渠道打包统计;多渠道打包的步骤: 以友盟的渠道统计为例,渠道信息一般在 Andr...原创 2018-02-09 17:41:38 · 150 阅读 · 0 评论 -
友盟多渠道打包
目前项目中使用到了多渠道打包的功能,首先理解多渠道打包,渠道可理解成安卓apk应用市场平台,所以多渠道打包可以理解成在打包多个应用市场的apk,要在每个应用市场上打包一个安卓Apk,这样好处是可以在查看apk在每个安卓市场的下载量,活跃度,便于公司进行重点运营和推广,因为友盟多渠道统计比较成熟,所以公司采用的是友盟的多渠道打包统计;多渠道打包的步骤: 以友盟的渠道统计为例,渠道信息一般在 Andr...原创 2018-02-09 17:22:55 · 165 阅读 · 0 评论 -
数据库封装
一、为什么封装数据库? 其实封装数据库的原因和封装网络连接的原因是相同的。在这我们就简单的说一下原因:类似于网络连接,数据库创建和操作的方式也是很多了:不同数据库有不同的API,像MySQL,SQLite等,在Xutils框架中也给我们封装了数据库的操作方法。假设在开发应用时,我们使用的是SQLite数据库及其API,但是在接下来的升级和维护中,我们要将数据库的操作修改为xUtils框架转载 2017-12-19 11:45:18 · 297 阅读 · 0 评论 -
getReadableDatebase() 和getwriteableDatebase()的解读
1. 两个方法干嘛的?两个方法都是用于获取数据库的读写对象,并不是字面上一个获取读取数据库的对象,另一个获取写数据库的对象。2. getWritableDatabase()源码注释:/** * Create and/or open a database that will be used for reading and writing. * The first time this is原创 2017-12-14 17:48:03 · 1309 阅读 · 0 评论 -
Activity与Service进行通信的三种方式
Activity与Service进行通信的三种方式第一种 简单通信直接通过Intent进行传值,我们在启动一个Service的时候通过Intent的对象向Service进行传值,这种方式传递值比较不方便,性能不是很高。(1)在MainActivity中通过启动服务和终止服务的按钮分别调用startService(intent)和stopService(intent)转载 2017-11-16 09:51:04 · 4877 阅读 · 0 评论 -
Android APK反编译就这么简单 详解(附图)
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看。下面是我参考了一些文章后简单的教程详解。(注:反编译不是让各位开发者去对一个应用破解搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平。)转载 2017-03-09 11:14:02 · 244 阅读 · 0 评论 -
MVP实战心得(三)---封装Retrofit2.0+RxAndroid+RxBus
转载请标明出处:http://www.jianshu.com/p/2a2464938b47本文出自:Jlanglang介绍:Retrofit:对okhttp的封装,可以更方便的使用okhttpRxAndroid响应式编程框架,rxjava的扩展,很爽的链式编程魅力在于对数据的处理,与线程切换的灵活性.用来处理异步操作(Lambda表达式不会用.用Lambda表达式代码会更少,但不会转载 2017-11-03 11:15:11 · 408 阅读 · 0 评论 -
Mvp实战心得(二)---Base基类的封装
转载请标明出处:http://www.jianshu.com/p/651146bd0688本文出自:Jlanglang基类:在开发中有着很重要的地位,基类设计封装的好,不管是对app的性能,还是对开发的效率都有着很重要的作用基类可以简单几个字概况,一个良好的父类.结构:不管你的app是多个acitivity,还是1个activity+n个fragment,还是多个acitivity多个转载 2017-11-03 11:10:45 · 1022 阅读 · 0 评论 -
Android--带你一点点封装项目 MVP+BaseActivity+Retrofit+Dagger+RxJava(一)
1,其实早就想把这些东西给封装封装的,一直没有时间,今天刚好项目进入到测试阶段了,Bug同事在哪儿测试的飞起,但发现提bug的尽然是我(得意脸),然后上午把ios的包测试了一下,顺便把服务器给测挂了(别问我是怎么做到的),现在服务器的同事还在拿着刀满街找我呐。好了不扯了,就想标题写了,一直想把这一块揉在一起写写,那就趁这个机会吧。先看看今天我们要实现的效果:2,有些童鞋就很转载 2017-11-03 11:00:44 · 561 阅读 · 0 评论 -
防止APP被反编译,混淆设置
1.首先需要在app下的build.gradle下配置,true表示编译时会混淆代码[html] view plain copyspan style="font-size:18px;">buildTypes { release { minifyEnabled true原创 2017-03-09 11:47:02 · 3590 阅读 · 0 评论 -
Android 基于线程池的网络请求框架
引言 现在的Android开发很多都使用Volley、OkHttp、Retrofit等框架,这些框架固然有优秀的地方(以后会写代码学习分享),但是我们今天介绍一种基于Java线程池的网络访问框架。实现思路及实现 APP界面上面的数据都是通过网络请求获取的,我们能不能将网络请求依次入队,然后配合着Java线程池,让线程依次处理我们的请求,最后返回结果给我们。下面我们先来看转载 2017-02-23 17:04:52 · 1610 阅读 · 0 评论 -
利用线程池实现Android客户端的http网络数据请求工具类
该工具类值只实现了HTTP的get方法,参考get方法可轻松实现post、put、delete等方法,下面是get方法的实现[java] view plain copypublic class SimpleHttpClient { private static final String TAG = Simpl转载 2017-02-23 16:42:03 · 343 阅读 · 0 评论 -
android onSaveInstanceState的使用方法
[java] view plain copy package com.saveInstanceDemo.src; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log;转载 2016-11-28 16:37:42 · 298 阅读 · 0 评论 -
【Android进度条】三种方式实现自定义圆形进度条ProgressBar
一、通过动画实现定义res/anim/loading.xml如下:[html] view plain copy print?xml version="1.0" encoding="UTF-8"?> animation-list android:oneshot="false" xmlns:android="http://schemas.转载 2016-11-28 14:25:30 · 309 阅读 · 0 评论 -
Android中对/data/data/<package name>/files下文件的读写操作
本文重点展示,对/data/data//files中文件的读写操作的实现。 一、写出数据到files文件夹中,Activity提供了openFileOutput()方法,可以把数据输出到/data/data//files的文件夹中。[java] view plain copy public class FileActivit转载 2016-11-28 13:51:51 · 13572 阅读 · 0 评论 -
dispatchKeyEvent和onKeyDown
1)当我们重写了onKeyDown方法后,如果return false,则会继续调用系统的onKeyDown方法。如果只想让程序调用自己写的onKeyDown,则需要return true。利用该特性可以拦截耳机耳机按键,防止启动音乐。下面转载一下拦截屏幕按键的方法:在Android系统中用来显示界面的组件(Component)为Activity转载 2016-10-18 12:33:55 · 9204 阅读 · 0 评论 -
关于Android输入法遮挡控件处理方法!!!!!(可以指定控件,使其在输入法之上)
版权声明:本文为博主原创文章,未经博主允许不得转载。先看图这是 修改之前这样一看输入法挡住了 底下的登录按钮,很不爽,没关系,接下来看看处理后的效果这样 就完全显示出 登录按钮了,下面 是代码@Overridepublic void initView(Bundle savedInstanceState) {转载 2016-10-20 11:10:27 · 1342 阅读 · 0 评论