- 博客(119)
- 资源 (14)
- 收藏
- 关注
原创 AS问题处理 - VIVO手机APK安装失败
VIVO手机APK安装失败现象: 通过Android Studio连线vivo x21测试机,直接运行APK,安装失败。运行就显示"解析包错误"。原因: 部分VIVO手机不支持安装Debug版本的APK,只能通过正式包安装。解决方案: 1、设置你的Android Studio,关闭Instant Run。File->Settings->Build,Exec...
2019-02-26 10:37:24
4278
原创 Android Bug - 魅族三Shader问题
这几天编写Opengl项目,通过shader进行绘制,在做渐变的时候出问题了。首先在魅族或者其他手机或者均为正常渐变,而偏偏在魅族3(MX3)手机上渐变有问题。核心代码如下:float scale = getScaleByPoints(m_nForeGradientBeginPos, m_nForeGradientEndPos, vec2(v_texCoord[0], v_texC
2017-09-15 11:35:43
1182
转载 Android学习 - onRetainNonConfigurationInstance()与onSaveInstanceState()的比较
Android中转屏与Activity状态的保存有很多种方法,其中onSaveInstanceState()和onRetainNonConfigurationInstance()比较常用,此处比较这两种方式适用地方。针对Android平台,不论出于哪种目的,都或多或少需要在多个Activities中的跳转操作,其中包括为了获得某些系统资源和必要信息,而通过启动(startActivity()、
2017-09-07 16:29:03
2721
转载 Android学习 - Android XML的使用
一、布局文件。在layout目录下,使用比较广泛;我们可以为应用定义两套或多套布局,例如:可以新建目录layout_land(代表手机横屏布局),layout_port(代表手机竖屏布局),系统会根据不同情况自动找到最合适的布局文件,但是在同一界面的两套不同布局文件的文件名应该是相同的,只是放在了两个不同的目录下。二、图片文件。在drawable目录下,从2.1版本以后分为三个目录:1
2017-09-07 11:45:01
740
原创 Ubuntu下Android Studio开发环境搭建
Ubuntu下Android开发环境搭建Ubuntu系统下Android开发环境搭建,Google提出新的开发工具Android Studio,这里就搭建Android Studio开发环境搭建。一、Ubuntu下JDK处理首先,需要安装JDK,Ubuntu系统上OpenJDK,但是编程开发必须使用OracleJDK,所以还需安装Oracle JDK。当前的Android Studio
2016-07-16 14:44:51
1332
原创 Android学习 - 如何结束进程
Android结束进程,关闭程序的方法。经过这几天的调研,发现了Android结束一个进程的方法。即采用下面这个类:void android.app.ActivityManager.restartPackage(String packageName)public void restartPackage (String packageName)Since: API Level 3Ha
2015-06-09 16:03:09
655
原创 Android学习 - Android最佳性能实践
(一)合理管理内存怎样才能写出高性能的应用程序,如何避免程序出现OOM,或者当程序内存占用过高的时候该怎么样去排查。确实,一个优秀的应用程序,不仅仅要功能完成得好,性能问题也应该处理得恰到好处。为此,我也是阅读了不少Android官方给出的高性能编程建议,把这些建议进行整理和分析,帮助大家能够写出更加出色的应用程序。注意文章的内容基本源于AndroidDoc,如果想要阅读更加详细的关于性能
2015-06-08 11:50:51
894
原创 Android学习 - Android优化浅析
Android优化来说有很多方面,比如listView等。但是单纯来说Android本身系统就提供了很多优化,所以这里讲优化其实有点没有必要。总体来说这里所说的优化其实是程序员平时所犯的简单错误,也就是说这里所说的优化是想让程序员拥有一个良好的代码风格,尽量避免因为代码错误而产生的多余消耗。优化的核心原则不做不必要的事,不分配不必要的内存1、字符串频繁操作时,多用StringBuffe
2015-06-04 10:06:32
540
原创 Java学习 - Thread的Stop方法以及替换实现
在Android中新线程如果不及时停止是很麻烦的,我们这一般用线程池来完成,但是有些时候不能依赖线程池。这里Stop方法不推荐使用,我给个具体的例子:public class DeprecatedStop extends Object implements Runnable { public void run() { int count = 0; while (count < 20)
2015-06-03 16:15:45
1222
原创 Java学习 - 内存简介
首先我们要明白一点,我们所使用的变量就是一块一块的内存空间!!一、内存管理原理在java中,有java程序、虚拟机、操作系统三个层次,其中java程序与虚拟机交互,而虚拟机与操作系统间交互!这就保证了java程序的平台无关性!下面我们从程序运行前,程序运行中、程序运行内存溢出三个阶段来说一下内存管理原理!1、程序运行前:JVM向操作系统请求一定的内存空间,称为初始内存空间!程序执行过程
2015-06-03 15:43:07
513
原创 Android学习 - 使用及实现系统分享接口
为了应用的推广、传播,很多的应用中都有“分享”功能,一个按钮,点击后会出现短信、微博等等。一切实现了分享功能的应用列表。这一篇文章主要介绍怎么调用分享功能和怎么实现分享接口让自己应用出现分享列表中。Android应用中能很方便的完成这些功能,这也正是Android的伟大之处,他能很简单的完成应用之间的沟通以相互整合。调用分享功能1、分享文本分享功能使用的隐式启动Activity的方法,
2015-06-03 14:12:57
660
原创 Android学习 - 触摸及手势操作
GestureDetector简介触摸屏为我们操作无键盘、无鼠标的手机系统带来了很多的便利。当用户触摸屏幕时会产生很多的触摸事件,down、up、move等等。View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,如下:public class MainActiv
2015-06-03 13:59:44
1104
转载 Java学习 - Java操作MongoDB
java驱动程序是Mongodb中的驱动程序之一,也是比较成熟的Mongodb驱动程序之一,下面介绍了使用java连接、操作Mongodb。一、安装java驱动程序Mongodb的java驱动程序是一个jar包,可以在:https://github.com/mongodb/mongo-java-driver/downloads下载的jar导入到eclipse的项目中即可。二、j
2015-06-03 11:21:55
741
原创 Java学习 - URL短地址压缩算法
短网址应用已经在全国各大微博上开始流行了起来。例如QQ微博的url.cn、新郎的t.cn等。我们在新浪微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://t.cn/hrYnr0。为什么要这样做的,原因我想有这样几点:1、微博限制字数为140字一条,那么如果我们需要发一些连接上去,但是这个连接非常的长,以至于将近要占用我们内容的一半篇幅,这肯定是不能被允许的,所以短网址应运
2015-06-03 11:08:57
1777
原创 Android学习 - Service被关闭后自动重启,解决被异常kill 服务
Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStartCommand方法中做一些处理。然后我们注意到这个函数有一个int的返回值,这篇文章就是简单地讲讲int返回值的作用。从Android官方文档中,我们知道onStartCommand有4种返回值:
2015-06-03 10:49:44
627
转载 Android学习 - 判断手机是否为双卡并发短信
判断手机是否为双卡:public static void initIsDoubleTelephone(Context context) { boolean isDouble = true; Method method = null; Object result_0 = null; Object result_1 = null; TelephonyManager tm = (Telep
2015-06-03 10:44:39
3094
转载 Android学习 - 拨号盘dialer定制声音DTMF Tones
DTMF:双音多频,电话系统中电话机与交换机之间的一种用户信令,通常用于发送被叫号码。双音多频的拨号键盘是4*4的矩阵,每一行代表一个低频,每一列代表一个高频,每按一个键就发送一个高频和低频的正弦信号组合。比如1相当于697和1209赫兹(Hz)。交换机可以解码这些频率组合并确定所对应的按键。现在我就想给自己的拨号键盘加上双音多频的声音,类似于固定电话拨号的声音。页面类似于系统的拨号盘。p
2015-06-03 10:32:01
882
转载 Android学习 - ant批量打包
很多的应用中需要加上应用推广的统计,如果一个一个的去生成不同渠道包的应用,效率低不说,还有可能不小心弄错了分发渠道,使用ant可以批量生成应用。一、添加渠道包信息为了统计渠道信息,就不得不在程序的某个地方加入渠道的信息,然后针对不同的渠道打不同的包。一般可以在Manifest文件中加入渠道编号,而不直接写在代码中。这样做的好处是,可以针对不同渠道,自动化去修改Manifest文件中的渠道编
2015-06-03 09:37:11
487
转载 Android学习 - 游戏图片
根据系列图片绘制动画总结一、采用系统提供的Animation类,用自带的方法其中的animation.xml文件如下:<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" > <item androi
2015-06-02 22:54:18
658
原创 Android学习 - 网络编程的理解
1、Socket通信(底层、通信的数据协议、通信模式)通信模式:同步、异步通信协议:有状态(常连接)、无状态(无常连接)(无法把第二次关联和第一次关联联系起来)在一次完整的通信会话过程中连接(socket)一直建立着,没有中断。有状态:例如打电话,我第一次打给你问你吃了吗?你说吃了,然后我又问你吃啥,你说喝粥,也就是说第二次我问你的时候你知道我是谁?无状态:我第一次打电话给你问
2015-06-02 22:45:45
590
转载 Android学习 - 移动web开发框架
纯粹的总结一下移动web开发框架,移动web开发框架有jQuery Mobile、Sencha Touch等等,他们都来源于web开发,是成熟的框架。jQuery Mobile出自于jQuery家族,Sencha Touch来自于ExtJS。jQuery Mobile和Sencha Touch都是比较成熟老牌的框架,项目中也有应用。国内也有公司,像BAT巨头也在探索和实现了适合自己的移动web框架
2015-06-02 22:41:56
798
原创 Android学习 - android摄像头使用方式
既然要用到硬件肯定要牵涉到权限,在Mainifest.xml中加入camera的权限: 调用camera最简单的办法是调用系统的功能,然后通过onActivityResult方法获得图像数据。首先创建activity_man.xml:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2015-06-02 22:18:52
1052
原创 Android学习 - Material Design设计规范
作为技术开发者需不需要了解设计规范?个人认为非常需要,一个交流的需要,另一就是了解相关的设计才能储备相应地知识,知道UI开发的方向。这问题非常希望读者能留言讨论。Android的设计风格变迁可以划分到三个时代:无序时代、Holo theme和MaterialDesign。1、无序时代无序时代是没有Android设计规范的。无序时代的Android应用设计主要是参考的iOS的设计规范及其拟物
2015-06-02 22:11:38
1278
转载 Android学习 - Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
Android系统的运行时库层代码是用C++来编写的,用C++来写代码最容易出错的地方就是指针了,一旦使用不当,轻则造成内存泄漏,重则造成系统崩溃。不过系统为我们提供了智能指针,避免出现上述问题,本文将系统地分析Android系统智能指针(轻量级指针、强指针和弱指针)的实现原理。在使用C++来编写代码的过程中,指针使用不当造成内存泄漏一般就是因为new了一个对象并且使用完之后,忘记了delet
2015-06-01 18:22:43
483
原创 Android小知识 - 获取Android手机中SD卡内存信息
SD卡作为手机的扩展存储设备,在手机中充当硬盘角色,可以让我们手机存放更多的数据以及多媒体等大体积文件。因此查看SD卡的内存就跟我们查看硬盘的剩余空间一样,是我们经常操作的一件事,那么在Android开发中,我们如何能获取SD卡的内存容量呢?首先,要获取SD卡上面的信息,必须先对SD卡有访问的权限,因此第一件事就是需要添加访问扩展设备的权限。其次,需要判断手机上面SD卡是否插好,如果有
2015-05-27 22:15:19
757
原创 Androi小知识 - Android抽象布局include、merge、ViewStub
在布局优化中,Android的官方提到了这三种布局、、,并介绍了这三种布局各有的优势,下面也是简单说一下他们的优势,以及怎么使用,记下来权当做笔记。1、布局重用标签能够重用布局文件,简单的使用如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientatio
2015-05-27 22:09:01
629
原创 Android学习 - 圆形ImageView
先看下效果图:public class RoundedImageView extends ImageView { private int borderThickness; private int borderColor; private Bitmap image; private Context context; private int width = 0; private
2015-05-20 21:45:48
723
原创 Android学习 - Android图片变换处理
Matrix图片变换主要讲解一下如何处理对一个Bitmap对象进行处理,包括:缩放、旋转、位移、倾斜等。在最后将以一个简单的Demo来演示图片特效的变换。Matrix对于一个图片变换的处理,需要Matrix类的支持,它位于"android.graphics.Matrix"包下,是Android提供的一个矩阵工具类,它本身不能对图像或View进行变换,但它可与其他API结合来控制图形、V
2015-05-20 21:40:11
986
转载 Android学习 - Android应用如何支持屏幕多尺寸多分辨率问题
作为Android应用程序开发者都知道android是一个“碎片化”的世界。多种系统版本、多种尺寸、多种分辨率、多种机型,还有不同的厂商定制的不同ROM,你开发的应用会在不可预期的手机上报错。这给开发适配带来不小的难度。这篇文章会告诉我们怎么解决这个问题。1、Android碎片化1、android系统版本Android更新较大的版本如下:上面只有当前可用版本,Android
2015-05-20 21:22:59
614
转载 Android学习 - Android网络编程https
https 不验证证书方式(信任所有证书)前面写了http的联网方式,Android平台上经常有使用https的需求,对于https服务器使用的根证书是受信任的证书的话,实现https是非常简单的,直接用httpclient库就行了,与使用http几乎没有区别。但是在大多数情况下,服务器所使用的根证书是自签名的,或者签名机构不在设备的信任证书列表中,这样使用httpclient进行http
2015-05-19 20:40:53
797
转载 Android学习 - android上实现编解码
speex编解码Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛。另外,相对于其它编解码,Speex也很适合网络应用,在网络应用上有着自己独特的优势。同时,Speex还是GNU工程的一部分,在改版的BSD协议中得到了很好的支持。Speex是基于CELP并且专门为码率在2-44kbps的语音压缩而设计
2015-05-18 20:53:24
1240
转载 Android学习 - android应用安全
签名机制关注android应用安全,应该关注android的签名机制,平时我们都是使用eclipse直接签名,不了解签名的流程机制,我们今天开始了解一下。Android签名在android应用中扮演着很重要的角色,例如,Android系统禁止更新安装签名不一致的APK;如果应用需要使用system权限,必须保证APK签名与Framework签名一致,等等。android应用签名在应用防篡改、防
2015-05-18 20:37:47
552
原创 Android学习 - 自定义输入法
输入法的例子和源代码看了不少时间了,看得头很晕,很郁闷。静下心来把整个代码想了一遍,其实大部分代码都在处理绘制界面,以及事件的处理,核心代码很少,都被底层封装得很完美了。先看看一般输入法的界面:分为两个部分,上部分是候选窗口(CandidateView),用来显示候选词,现在常用的输入法都有这个功能,如在搜狗、google输入法中输入abc,输入框中就会显示很多相关联的中文词。下部分就
2015-05-15 14:57:40
4710
原创 Java提高 - 字符串循环移位
问题,给你一个字符串,要求循环左移n位。比如对"abcdefg"循环左移2位,我们要得到"cdefgab"。附加条件,不能使用连续辅助空间(包括动态分配),只能使用若干单个变量(即O(1)空间)。首先,我们知道,反转一个字符串操作("abcd"变"dcba"),是不需要额外数组辅助的,只要头尾数据交换就可以了。然而,可能你不知道,仅仅使用字符串反转可以实现字符串循环移位:/** * 用三
2015-05-14 20:25:08
5424
1
原创 Android学习 - android Fragments简析
概述Fragment表现Activity中用UI的一个行为或者一部分。可以组合多个fragment放在一个单独的activity中来创建一个多界面区域的UI,并可以在多个activity里重用某一个fragment。把fragment想象成一个activity的模块化区域,有它自己的生命周期,接收属于它的输入事件,并且可以在activity运行期间添加和删除。Fragment必须总是被嵌入
2015-05-13 21:49:49
579
原创 Android学习 - Android Socket使用浅析
套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。JAVA有两个基于数据流的套接字类:ServerSocket,服务器用它“侦听”进入的连接;Socket,客户端用它初始一次连接。侦听套接字只能接收新的连接请求,不能接收实际的数据包。套接字是基于TCP/IP实现的,它是用来
2015-05-13 21:34:37
1434
转载 Android学习 - Android新的menu实现ActionMode
Android的menu有多种实现方式,这里介绍一种新的menu实现方式:ActionMode。ActionMode是Android 3.0以后出现的,我们可以使用AppCompat库使ActionMode兼容至Android 2.1。Android3.0以前,我们处理列表的长按事件经常使用Context Menu,Android3.0以后,我们有了新的选择:ActionMode。下图左边效果
2015-05-13 21:25:14
515
转载 Android学习 - AppCompat实现Action Bar
每一位Android开发者对Action Bar这种设计都不陌生了,毕竟它已经发布了至少两年了。Android团队发布ActionBar设计规范时同时放出了ActionBar的Api来支持这种设计。ActionBar的API被添加在Android3.0(API级别11)中,低版本的还是用不了,根本不能适配支持Android 2.X系列的应用。很幸运有第三方开源的actionbarsherlock支
2015-05-13 21:21:34
629
原创 Java提高 - 奇数阶幻方
所谓幻方(最基本的那种),就是横,竖,对角线上的数的和等于一个常数的数字方阵4 3 89 5 12 7 6以上这个图,有什么规律?容易写成代码吗?我们把这个图,向右复制五次,向下复制三次,展开一下:4 3 8 4 3 8 4 3 8 4 3 8 4 3 89 5 1 9 5 1 9 5 1 9 5 1 9 5 12 7 6 2 7 6 2 7 6 2 7 6 2 7 6
2015-05-13 20:32:53
1600
转载 Android学习 - Navigation Drawer
NavigationDrawer是Android团对在2013 google IO大会期间更新的Support库(V13)中新加入的重要的功能。实现Navigation Drawer需要使用最新支持库(V13)的DrawerLayout。Navigation Drawer的设计指南请参考。Navigation Drawer是从屏幕的左侧滑出,显示应用导航的视图。官方是这样定义的:The n
2015-05-13 10:18:56
948
文件管理软件
2014-08-08
Data Structure
2010-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人