
Android
文章平均质量分 80
wjaycooode
fwe223f2f2
展开
-
Android7.0新特性,及Android N适配
新特性部分Android 7.0 Nougat 提供新功能以提升性能、生产效率和安全性,主要新增了以下的新特性和优化:一、新的NotificationAndroid N 增加了许多新的notifications API,进行了重新的设计,引入了新的风格。模板更新: 开发者将能够充分利用新模板,只需进行少量的代码调整。消息样式自定义: 新增自定义样式、消息回复、消息分组等更加灵活。原创 2017-03-01 17:11:30 · 9642 阅读 · 1 评论 -
Android 静默安装(自动安装)和静默卸载的实现方法
目前很多应用市场,做了静默安装的功能,静默安装就是无声无息的在后台安装apk,没有任何界面提示。智能安装就是有安装界面,但全部是自动的,不需要用户去点击。首先强调两点:静默安装必须要root权限 智能安装必须要用户手动开启无障碍服务。原创 2017-02-22 16:35:20 · 20347 阅读 · 6 评论 -
判断Listview滑动到了最底部(且最后一个item完整显示)
记录下代码:listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public原创 2016-09-13 14:57:34 · 8858 阅读 · 1 评论 -
Android判断应用在前台还是后台运行(判断应用前后台切换)
我们的应用要获取后台运行的app的包名,主要是getRunningTasks()方法的调用,经过测试在android 2.2 到 4.4的版本都运行的很好,但是在Android 5.0 Lollipop. 中获得不到,无法得到真实的后台运行app名称,在Android 5.0 Lollipop中获得的名称是 'Launcher3',我使用过的模拟器是 Genymotion Emulato原创 2015-06-03 16:53:46 · 14927 阅读 · 11 评论 -
Android studio中正确引入so文件的方法
相信很多朋友在使用Android studio开发中,遇到过如何引入第三方so文件的问题,然而第三方官方仅仅给出了ADT环境下的集成方式。Android studio中默认使用的是gradle编译方式,与ADT编辑方式不一样,那么so文件应当如何引入呢?其实很简单。这里以集成JPUSH为例,看一下so文件如何引入到编译环境,最终到JNI直接可以调用该so文件。首先,在我原创 2015-03-23 18:23:42 · 173676 阅读 · 44 评论 -
伪锁-微信隐私锁
伪锁,帮助亿万微信用户解决隐私安全问题,优秀的界面设计,卓越的用户体验,有趣的微信伪装锁,谁动谁知道,看了只有好奇和纳闷,不仅仅是保护隐私哦,最重要的是,我们做到保护过程更自然,用伪装的方式让对方不觉的是密码锁,还避免了尴尬呢,来动动试试?保护微信隐私,我最行!应用场景:" 你干嘛看我微信内容,被偷翻微信了?" 亲朋好友的小朋友无意把你微信内容转发?" 同学聚会总有人拿你手机窥微信隐私?以上这些问题,伪锁会帮你漂亮的解决!原创 2015-02-04 18:04:39 · 5314 阅读 · 2 评论 -
关于在TextView中设置DrawableLeft不显示的问题
xml中的textView:<TextView android:id="@+id/bookTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android原创 2014-12-03 17:39:36 · 10003 阅读 · 1 评论 -
Android省市区三级联动滚轮选择(真实项目中提取出来的组件)
最近项目要做一个,类似淘宝手机客户端的,选择收货地址的三级联动滚动选择组件,下面是它的大致界面截图:在IOS中有个叫UIPickerView的选择器,并且在dataSource中定义了UIPickerView的数据源和定制内容,所以用只要熟悉它的基本用法,要实现这么个三级联动滑动选择是挺简单的。 言归正传,今天讨论的是在Android里面如何来实现这么个效果,那么如何实现呢原创 2014-11-27 18:22:08 · 120766 阅读 · 139 评论 -
招财进宝手势锁,Android手势密码的实现
这几个月都是在做招财进宝项目,一个理财下载地址:http://8.shengpay.com/。招财进宝手势锁,Android手势密码的实现。原创 2014-11-03 17:01:18 · 23878 阅读 · 42 评论 -
setCompoundDrawables与setCompoundDrawablesWithIntrinsicBounds的区别
更换radiobutton中的图片在xml中很好设置,但对于初学者如何在代码中设置还是不容易找的。没法子,通过看原版api找到两个方法,setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds。下面交给大家方法。第一个方法:setCompoundDrawablesWithIntrinsicBounds(Drawable原创 2014-04-24 16:30:52 · 63156 阅读 · 10 评论 -
Android程序的签名保护及绕过方法
随着Android 市场的扩大,各类盗版、破解、打包党纷纷涌现,其使用的手法无非是apk _> smali ->修改代码 ->重打包签名,为对抗此类技术,广大程序员挖掘了Android平台特有的保护技术:签名校验 1、JAVA代码本地签名校验Android要求安装到手机上的APK文件必须有签名,而理论上开发者的签名他人是无法得到的(证书保护是另外一回事),所以原创 2014-03-29 15:55:49 · 23044 阅读 · 5 评论 -
APK安装过程及原理详解
PackageInstaller 原理简述 应用安装是智能机的主要特点,即用户可以把各种应用(如游戏等)安装到手机上,并可以对其进行卸载等管理操作。APK是Android Package的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。 Androi原创 2014-02-21 14:00:51 · 3692 阅读 · 2 评论 -
android获取APK签名信息及MD5指纹
1.获取APK的签名信息private String showUninstallAPKSignatures(String apkPath) { String PATH_PackageParser = "android.content.pm.PackageParser"; try { // apk包的文件路径原创 2014-01-17 09:53:27 · 72330 阅读 · 13 评论 -
smali文件语法
Dalvik opcodes表中的VX值表示的Dalvik寄存器。根据不同的指令,16,256或64K寄存器可以访问。对long和double值的操作使用两个寄存器,例如在V0的注册解决占地V0和V1的寄存器双重价值。布尔值存储真正的为1和0为假。被翻译成整数运算的布尔操作。HIG-endian格式中所有的例子,如0F00 0A00 0F,00,0A,00顺序编码。原创 2014-01-03 19:26:58 · 3978 阅读 · 0 评论 -
listView多个viewType,listView多个类型的item
最近在项目中需要对listview中的数据进行分组,我构思的基本原理就是,在适配器Adapter的getView()方法中,根据当前item类型,分别加载不同的布局,这样是很容易实现的,想必大家都很清楚这个小东西。但是问题是,这样的代码写下来listview在数据很多时,上下滑动会很卡,于是乎就想到了用viewHolder来进行缓存, 难度就在对不同的item进行不同的缓存。下面是我实现的效果原创 2013-11-25 22:31:44 · 6646 阅读 · 7 评论 -
ListView:长按弹出上下文菜单(ContextMenu)
有两种方法实现长按弹出上下文菜单:方法一:1)注册上下文菜单/** * 上下文菜单演示Demo * * @author CodingMyWorld 2011-8-27 下午03:22:39 */publicclass SampleContextMenuActivity extends ListActivity { privatestaticfin原创 2013-11-04 14:45:20 · 16161 阅读 · 2 评论 -
Android out of memory 彻底解决Android因加载多个大图引起的OutOfMemoryError,内存溢出的问题
最近因为项目里需求是选择或者拍摄多张照片后,提供滑动预览和上传,很多照片是好几MB一张,因为目前的Android系统对运行的程序都有一定的内存限制,一般是16MB或24MB(视平台而定),不做处理直接加载的话必然会报OOM (Out Of Memmory)。网上有很多解决android加载bitmap内存溢出的方法,我总结了一个通用的方法,下面是我从的开发案例抽取出来的代码:我在项目中原创 2013-09-11 01:08:23 · 39958 阅读 · 35 评论 -
sqlite字段类型
改了点东西,因为想着要把项目优化,但是每条数据如果都存到单一数据库中,会造成以后的数据越来越大,怎么办?于是我想到了,可以考虑将单类数据存储到sqlite中,既可以备份,又可以用作缓存和其他作用。所以就想到了sqlite的一些特性,当然,花了大量的时间测试代码,即,一份代码自动生成不同的数据库,可以自由控制读取哪个库哪个表。基于YII而已。写的有点挫,但现在这样的好处是可以不改动原有任何一原创 2013-09-06 10:31:12 · 10786 阅读 · 1 评论 -
Keeping Your App Responsive
It's possible to write code that wins every performance test in the world, but still feels sluggish, hang or freeze for significant periods, or take too long to process input. The worst thing that can翻译 2013-06-23 20:41:13 · 1223 阅读 · 0 评论 -
关于android使用dexjar反编译后的classes.dex.dex2jar.jar为什么jd gui打不开?
运行 dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar然后运行JD-GUI工具,打开jar文件,看不到源代码,窗口是空白的……怎么破??在网上搜了一些办法,有些说换个反编译工具,或者其他的其实解决这个问题很简单,问题就是因为生成jar的时候就失败了, dex2jar.bat classes.dex 这一步没有成功,那是因为我的de原创 2013-06-06 16:26:08 · 8919 阅读 · 3 评论 -
Handler Looper Message源码研究
概述 Looper是消费者,Handler是生产者(同时Looper消费后,也会通知Handler),MessageQueue是消息队列,队列的实现方式是链表,Message是链表的一个节点。 我们的程序基本上之和Handler打交道。线程Thread的线程变量ThreadLocal中,存放着这个线程的Looper; Looper在初始化时,会新建一个消息队列Message原创 2013-06-04 15:28:49 · 2305 阅读 · 1 评论 -
ContentProvider内容提供者(二)
本篇学习一下监听ContentProvider的数据变化:如果ContentProvider的访问者需要知道ContentProvider中的数据发生变化,可以在ContentProvider发生数据变化时调用getContentResolver().notifyChange(uri,null)来通知注册在此URI上的访问者,如果ContentProvider的访问者需要得到数据变化通知,必须原创 2013-05-07 22:24:14 · 2429 阅读 · 0 评论 -
ContentProvider内容提供者(一)
作为四大组件之一的ContentProvider,其作用是对外共享数据,相对文件和数据库存储来说,它的好处是统一了数据访问方式。先来看看基本的介绍:Class OverviewContent providers are one of the primary building blocks of Android applications, providing cont原创 2013-05-05 21:55:52 · 2826 阅读 · 0 评论 -
android 获取屏幕高度和宽度 的方法
我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即可获取屏幕的尺寸。 在一个Activity的onCreate方法中,写入如下代码: DisplayMetrics metric = new DisplayMetrics(); getWindowM原创 2013-04-27 01:41:47 · 2759 阅读 · 0 评论 -
Android之UI学习篇十三:Gallery控件学习
Gallery组件主要用于横向显示图像列表,不过按常规做法。Gallery组件只能有限地显示指定的图像。也就是说,如果为Gallery组件指定了9张图像,那么当Gallery组件显示到第9张时,就不会再继续显示了。这虽然在大多数时候没有什么关系,但在某些情况下,我们希望图像显示到最后一张时再重第1张开始显示,也就是循环显示。要实现这种风格的Gallery组件,就需要对Gallery的Adapter原创 2013-03-10 11:25:43 · 3577 阅读 · 0 评论 -
如何使用代码动态的获取和设置ImageView的宽度和高度?
国内某金融企业的一道面试题:如何在代码中获得一个ImageVIew的高度和宽度?相信很大一部分人,会直接想到用imageview.getWidth() 和 imageview.getHeight() 来获得,其实不然。我们可以自己写个程序来跑一下,当我们放置一张图片在imageView中,并且设置了它的高度和宽度,我们不妨在日志控制台输出看一下,Log.i("MainActivity"原创 2013-03-06 21:45:52 · 54950 阅读 · 13 评论 -
Android中对menu、home、back键的监听
Android中对menu、home、back键的监听,通过KeyEvent中的常量值来判断用户点击了哪个按钮。其中对home键的监听需先在manifest文件中添加 这一权限,并且在程序中复写onAttachedToWindow()方法,以便解除系统对home键的守护。具体详见下面的例子: import android.app.Activit原创 2013-03-03 17:00:14 · 10669 阅读 · 4 评论 -
Android解析JSON方式(二) 客户端解析SON数据
在上一篇中搭建了服务器端的程序,这篇我们来建立一个Android项目,来访问服务器取得JSON格式数据,并解析JSON数据格式,输出到日志控制台。我们建立的项目目录结构如下:运行的界面截图:当我们分别点击四个按钮,可以看到控制台的输出日志:以下是源代码:main.xml<LinearLayout xmlns:androi原创 2013-03-02 23:19:47 · 13144 阅读 · 3 评论 -
Android解析JSON方式(一)服务器端生成JSON数据
JSON数据格式的定义: JSON的全称是:JavaScript Object Notation,是一种轻量级的数据交换格式。它构建于两种结构: 1、"名称/值" 对的集合(a collection of name / value pairs)。不同的语言中,它被理解为对象(Object),记录(Record),结构(struct),字典(Dictionary)原创 2013-03-02 21:47:22 · 6908 阅读 · 9 评论 -
解决ScrollView中嵌套ListView滚动效果冲突问题
在ScrollView中嵌套使用ListView,ListView只会显示一行到两行的数据。起初我以为是样式的问题,一直在对XML文件的样式进行尝试性设置,但始终得不到想要的效果。后来在网上查了查,ScrollView和ListView两个View都有滚动的效果,在嵌套使用时起了冲突,一般不建议两者套用。 下面说说具体解决方案。方案的主要思路就是根据ListView子项重置其高度。解决原创 2013-03-01 23:32:36 · 44642 阅读 · 5 评论 -
Android学习之广播事件处理
什么是广播? 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。我们拿广播电台来做个比方。我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台的一样就可以收听他们的内容了。Android中的广播机制就和这个差不多的道理。电台发送的内容是语音,而在Android中我们要发送原创 2013-03-01 16:31:46 · 5639 阅读 · 0 评论 -
Android学习之Http使用Post方式进行数据提交
我们知道通过Get方式提交的数据是作为Url地址的一部分进行提交,而且对字节数的长度也有限制,与Get方式类似,http-post参数也是被URL编码的,然而它的变量名和变量值不作为URL的一部分被传送,而是放在实际的HTTP请求消息内部被传送。可以通过如下的代码设置POST提交方式参数: HttpURLConnection urlConnection = (HttpURLConnecti原创 2013-03-01 15:59:45 · 26757 阅读 · 3 评论 -
Android解析XML方式(三)使用DOM解析XML
这篇,我们来一起学习一下XML的第三种解析方式:使用DOM解析XML数据,首先在这里对DOM稍微作点介绍:DOM是一种用于XML文档对象模式,可用于直接访问XML文档的各个部位,在DOM文档中通常被模拟为树状结构,其中XML语法的每一个组成部分都表示一个节点,用DOM允许用户遍历文档树,从父节点移动到子节点和兄弟节点。并利用某节点类型特有的属性(元素具有属性,文本节点具有文本数据)。DOM原创 2013-02-26 22:47:36 · 2407 阅读 · 0 评论 -
Android解析XML方式(二)使用PULL解析XML
在前一篇中介绍了使用SAX解析XML,本篇来讲一下如何使用JAVA自带的PULL来解析XML数据,以及它们的各自优点在哪里。首先来看一下什么是PULL解析器以及它的基本特征:PULL解析器的运行方式和SAX解析器很相似,它提供了类似的事件,如:开始元素和结束元素,使用parser,next() 可以进入下一个元素并且触发相应的事件,事件将作为代码被发送,因此可以使用一个switch来对事件原创 2013-02-26 21:23:37 · 4657 阅读 · 0 评论 -
Android解析XML方式(一)使用SAX解析
Android解析XML三种方式:1、DOM (org.w3c.dom)文档对象模型方式,解析完的XML将生成一个树状结构的对象。2、SAX (org.xml.sax) simpleAPI for XML,以事件的形式通知程序,对XML进行解析。3、PULL (org.xmlpull.v1) 类似SAX方式,程序以"拉取"的方式对Xml进行解析。 本篇讲解一下SAX解析XML这原创 2013-02-26 19:51:10 · 3258 阅读 · 1 评论 -
Android数据存储方式(三)SQLite数据库
首先来稍微介绍一下SQLite数据库:SQLite数据库是一个嵌入式关系型数据库,它支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但世界上SQLite3也接收varchar(n)、char(n)、decimal(p,s)等数据类型,只不过在运算或者保存时会转成对于的五种数据类型。SQLite最大的特原创 2013-02-25 19:56:53 · 2144 阅读 · 0 评论 -
Android数据存储方式(二)SharedPreferences(偏好参数保存)
本篇来介绍一下Android数据存储的第二中方式:SharedPreferences,这种方式在保存软件的各项参数时应用最广泛,一般采用.xml文件来进行存放。实现的简单界面如下:在Activity的子类中,我们可以通过两种方式来获取第一种是: getPreferences(MODE_PRIVATE); //这种方式默认采用所在的类名作为xml文件的名称第原创 2013-02-24 22:30:07 · 13662 阅读 · 2 评论 -
Android数据存储方式(一)文件
很多时候我们开发的软件需要对处理后的数据进行存储,以供再次访问。Android为数据存储提供了如下几种方式:1、文件2、SharedPreferences(偏好参数)3、SQLite数据库4、内容提供者(Content provider)5、网络本篇介绍第一种存储方式:文件,我们采用文件来保存用户输入的数据,这里用到的是IO输入输出流对象,和使用SDCard的相关权原创 2013-02-24 22:18:10 · 20701 阅读 · 5 评论 -
Android Fragments 详细使用
2012-02-17 14:29 by Terry_龙, 30609 阅读, 7评论,收藏,编辑Fragments 诞生初衷自从Android 3.0中引入fragments 的概念,根据词海的翻译可以译为:碎片、片段。其上的是为了解决不同屏幕分辩率的动态和灵活UI设计。大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI翻译 2013-02-22 21:04:27 · 1452 阅读 · 0 评论 -
横竖屏切换时候Activity的生命周期的总结
曾经遇到过一个面试题,让你写出横屏切换竖屏Activity的生命周期。现在给大家分析一下他切换时具体的生命周期是怎么样的:1、新建一个Activity,并把各个生命周期打印出来2、运行Activity,得到如下信息onCreate-->onStart-->onResume-->3、按crtl+f12切换成横屏时onSaveInstanceState-原创 2013-02-22 20:18:54 · 50402 阅读 · 11 评论