Android
文章平均质量分 72
Ethan__Hu
欢迎大家访问我的博客网站:http://huyuxin.top/
展开
-
MVP的认识
为何MVP模式能在Android开发中大放异彩,我觉得很大一部分原因来源与传统的model-view的开发模式使得everything is connected with Activity。MVP开发模式使一部分的业务逻辑从Activity中抽取出来。那MVP是怎样的呢? 我们先理清M(model)V(view)P(presenter)他们各自的职责V(view)界面层:负责与用户交互展示数据原创 2017-06-04 15:28:35 · 994 阅读 · 0 评论 -
[读书笔记]监听事件的四种方式原理分析(接口回调)与比较
方式一:在布局文件的控件上设置onClick属性布局文件:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"原创 2016-09-21 13:41:22 · 2971 阅读 · 0 评论 -
[读书笔记]布局的屏幕适配常用方法
因为android的开放,android碎片已经无比严重了,在android中使用的又是pd,px,sp等单位,不像web一样使用百分比计算,现在app只兼容一种分辨率几乎没有 那这么多的分辨率我们怎样来适配呢?下面是我了解了的几种常用方法:尺寸限定符 在res文件夹下建立不同分辨率的layout文件夹如layout-layge,layout-sw600dp (sw600dp表示设备最小原创 2016-10-01 22:08:44 · 605 阅读 · 0 评论 -
[读书笔记]weight知多少
在LinearLayout(线性布局)中有个weight(权重)属性是大家经常用到的,下面有三种weight的使用场景,你能清楚的分辨控件各自所占的百分比吗?场景一: <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" a原创 2016-10-01 13:50:59 · 832 阅读 · 0 评论 -
Android中保存和恢复Fragment状态的最好方法
英文原文:Probably be the best way (?) to save/restore Android Fragment’s state so far经过这几年使用Fragment之后,我想说,Fragment的确是一种充满智慧的设计,但是使用Fragment时有太多需要我们逐一解决的问题,尤其是在处理数据保持的时候。首先,虽然其有类似于activity的onSaveInstan转载 2016-11-05 20:04:50 · 1527 阅读 · 0 评论 -
Android中的定时器AlarmManager
在Android上常用的定时器有两种,一种是Java.util.Timer,一种就是系统的AlarmService AlarmManager的作用文档中的解释是:在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,常用方法有五个:(1)set(int type,long startTime,转载 2016-10-12 21:19:58 · 628 阅读 · 0 评论 -
Android Studio下导入百度地图Demo
首先你需要下载百度地图的Demo,解压出来是这样的结构,下面我们以BaiduMap_AndroidSDK_v4.0.0_Sample这个demo为例,1.修改配置文件因为每个人的gradle版本,以及sdk版本都不一定相同,我们需要来到项目修改下列文件的配置信息 BaiduMap_AndroidSDK_v4.0.0_Sample\BaiduMapsApiASDemo目录下 修改gradle版原创 2016-10-10 19:36:23 · 7976 阅读 · 0 评论 -
android下的Juint测试
安卓下的Junit测试主要分三个步骤:导入测试类库: 在项目的AndriodManiFest.xml配置文件的application中导入测试类库 <!-- 1.导入测试类库 --> <uses-library android:name="android.test.runner"/>2.配置测试启动类: 在项目的AndriodManiFest.xml配置文件的mani原创 2015-10-26 15:15:08 · 687 阅读 · 0 评论 -
ADT删除appcompat_v7文件
当用ADT新建一个项目时出现appcompat_v7文件,并且新建的项目也提示有错误? 其实解决方法很简单,只要在新建项目时将Minimum Requied SDK选择在4.2以上就可以解决了。原创 2015-10-26 16:02:03 · 719 阅读 · 0 评论 -
Your project contains error(s),please fix them before running your application
ADT开发的时候碰到好多次提示“Your project contains error(s),please fix them before running your application.” 但是项目并没有出错!这让我很烦恼,后来菜找到解决方法,mark下,下次出错方便查询:编译的class、apk文件有问题:执行清除一下就可以了。Project→Clean→Clena Projects Sel原创 2015-10-26 19:42:17 · 938 阅读 · 0 评论 -
android中.9图的编辑
.9图也叫作自动拉伸位图.因为图片的后缀是.9.png所以也就称作.9图了,在很多的应用场景中我们都会用到.9图,比如QQ的聊天气泡,QQ发送的红包图片,等等他们都能够很好的适应内容的大小显示图片,并保证放大后的图片不失真,在sdk/tools下的draw9patch.bat可以编辑.9图,在Android Studio中也自带.9图的编辑功能,接下来我们就使用Androidstudio 自带的.9原创 2016-10-03 23:50:33 · 1931 阅读 · 0 评论 -
Android Stuido下NDK的简单实现
本文参考我同学的博文实现,有不清楚的地方,可以去他那看看. 在android studio 2.1 实现简单的ndkJNI是Sun公司定义的一套编程框架标准接口,允许Java代码和本地代码的相互调用. 我们什么情况下会使用JNI技术呢?需要注重处理速度直接进行硬件控制对已有的本地代码进行复用 -加载动态链接库我们通常接入别人sdk的时候都是使用的这种方法,比如接入新浪的SDK我们原创 2016-10-05 14:58:36 · 1532 阅读 · 0 评论 -
一个好用的全局异常捕获器
好久没写博客了,拿着个凑个数吧,这是一个全局异常捕获器,可以直接shotdown程序也可以再次重启程序,会将错误信息生成文件,方便上传至服务器,上传操作没有做,复制就能用!package com.jju.yuxin.cinews.utils;import android.content.Context;import android.content.Intent;import android.co原创 2016-11-18 20:24:50 · 530 阅读 · 0 评论 -
Apk源码的加固(加壳)原理解析和实现
好久没写博客了,要深刻检讨下!前言: 在Android中没有经过加密的Apk给人的感觉就是在裸奔,通过apktool,dex2jar,AndroidKill等各式各样的反编译工具就可以轻松的获取其smail代码,如这个叫SourceProject的helloworld程序被apktool反编译后,对于懂smail语法的逆向工程师来说就一览无余了。破解与反破解是相对的,所以我们尽可能的给自己的Apk原创 2017-06-19 00:30:43 · 8012 阅读 · 10 评论 -
[设计模式]接口代理实现Application的多继承
在工作中碰到一个场景,就是你APP的Application是需要继承自家的Application,但是你在接入别人的SDK时,有的sdk接入要求你的Application继承他家的Application,这就比较尴尬了.Java只能单继承这可怎么是好? 接口代理就可以用上了. 首先我们让清单文件声明的Multiapplication继承代理类ProxyApplication,通过super.的方原创 2017-03-29 11:50:26 · 1837 阅读 · 1 评论 -
[读书笔记]被人熟知的Activity
好久没写博客了,最近找了份实习,各种事情乱七八杂,但是没写就是没写不能为自己找借口! 今天2017年2月20日,在这立个flag,接下来每星期至少写一篇博客!工作笔记,读书笔记,不想成为工程师的码农不是好的程序员!正文:生命周期说到activity大家肯定都生命周期背的66的,那我们还是从生命周期讲开始,后面涉及一些要注意或则容易忽略的问题. activity常见的生命周期:onCreate原创 2017-02-20 23:37:21 · 874 阅读 · 0 评论 -
Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
在Android中我们经常会用到ViewPager+Fragment组合。然而,有一个很让人头疼的问题就是,我们去加载数据的时候由于ViewPager的内部机制所限制,所以它会默认至少预加载一个。这让人很郁闷,所以,我就想到要封装一个Fragment来解决这个问题。 这里还解决一个问题就是在Android酷炫欢迎页播放视频,仿蚂蜂窝自由行和慕课网 这里感谢有一位网友提出了bug,就是在转载 2017-01-20 15:18:25 · 744 阅读 · 0 评论 -
[设计模式]代理模式在android中的使用
假如,我们现在要在每次启动一个activity之前都要打印一条信息。 最笨的方式就是用一个BaseActivity集成Activity,但是,如果我们这个项目已经进行了N多年,想象一下,这得修改多少源码,且这破坏了我们的设计原则,我们尽量扩展而不是修改代码。那些已有的代码都是经历时间考验的,修改之后可靠性会下降。 当我们启动一个Activity的时候,肯定都会调用startActivity**转载 2017-01-22 19:01:09 · 888 阅读 · 0 评论 -
[图片备份]个人理解的Android事件分发机制
本来准备演讲的绘制的草图,结果没用上,好不容易绘制,就在这备份下吧!原创 2016-11-18 21:38:41 · 553 阅读 · 0 评论 -
Android Studio发布library到jCenter(问题集合)
烦心简单的事情折腾一天了,现在将碰到的问题集中写下,方便以后查询 试过两种方法gradle-bintray-plugin插件 有点麻烦,不过能用 ,推荐篇文章:在AndroidStudio中,使用Gradle打包aar到JCenter仓库!完整版教程!填补各种坑bintray-release插件 还不错,推荐篇郭神的文章: Android 快速发布开源项目到jcenter下面说下碰到的问原创 2016-12-07 11:49:34 · 1764 阅读 · 1 评论 -
Android 使用极光推送自定义消息打造个性的消息推送效果
极光推送,是一个面向普通开发者开放的,免费的第三方消息推送服务。本篇博客将结合案例介绍极光推送自定义消息的使用方法,利用自定义消息实现项目中特定的消息推送需求。本案例将实现如图效果: 参考官方Android SDK 教程完成激光推送的基本配置区别通知和自定义消息 通知即指在手机的通知栏(状态栏)上会显示的一条通知信息。 自定义消息是极光推送自己的概念。 自定义消息不是通知,所以不会被SD转载 2016-11-18 21:34:05 · 3237 阅读 · 0 评论 -
ADT启动失败情况列举
这都是我自己开发中遇到的问题记录下来的,下次遇见可以查阅,如果对大家有些许帮助不胜荣幸提示错误 emulator: Failed to sync vcpu reg emulator: Failed to sync HAX vcpu context 如图: 解决方法 1,在虚拟机设置里cpu选择ARM, 2.更新最新版的因特尔硬件加速执行器,立即下载原创 2016-02-26 15:22:44 · 767 阅读 · 0 评论 -
Android Studio常用快捷键
从Eclipse转studio开发十分尴尬就是快捷键的不一致,设置成eclipse方式结果出来一个四不像,不如把studio快捷键学起来,下面是鄙人觉得比较常用的一些快捷键,写下忘记了以便查阅,当用到更好用的会回来更新的。Studio常用快捷键ctrl+s--保存 //这个几乎应用通用ctrl+d--复制当前行到下一行、ctrl+/--//注释ctrl+shift+/--选中代码片段,原创 2016-03-13 11:01:11 · 632 阅读 · 0 评论 -
[读书笔记]Android LayoutInflater.inflate方法参数详解原理分析
LayoutInflater 在看inflate()方法时,我们随便看下如何获得 LayoutInflater ,获得LayoutInflater 实例有三种方式LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater()LayoutInflater inflater = LayoutInflate原创 2016-09-13 00:22:09 · 2679 阅读 · 0 评论 -
Android分析View的scrollBy()和scrollTo()的参数正负问题原理分析
Android设备平面直角坐标系在做分析之前,首先要建立起Android设备屏幕的平面直角坐标系概念。在Android手机中,屏幕的直角坐标轴概念简单来说: 屏幕左上角为直角坐标系的原点(0,0)从原点出发向左为X轴负方向,向右为X轴正方向从原点出发向上为Y轴负方向,向下为Y轴正方向上述概念可通过如下图总结:在Android中,我们通常说View在屏幕上的坐标,其实就是view的左上的坐标。调用转载 2016-09-13 16:56:25 · 3591 阅读 · 2 评论 -
[读书笔记]intent.putExtra的使用与原理分析
在android中用intent传递数据是非常常见的操作,我们一般会用intent.putExtra()这个方法来放入自己要传递的数据,然后再另一个地方使用getxxx()来获取,其中intent.putExtra()的传参类型有很多种:Intent putExtra(String name, String[] value)Intent putExtra(String name, Parcel原创 2016-09-19 00:16:01 · 34041 阅读 · 3 评论 -
ListView中getView()的原理
ListView 和 Adapter 的基础工作原理:ListView 针对List中每个item,要求 adapter “给我一个视图” (getView)。 一个新的视图被返回并显示 如果我们有上亿个项目要显示怎么办?为每个项目创建一个新视图?NO!这不可能!实际上Android为你缓存了视图。Android中有个叫做Recycler的构件,下图是他的工作原理: 如果你有10亿个项目(i转载 2016-09-14 17:05:02 · 5727 阅读 · 0 评论 -
Android ListView的OnItemClickListener()参数详解
我们在使用ListView的时候,一般都会为ListView添加一个响应事件Android.widget.AdapterView.OnItemClickListener。本文主要在于对OnItemClickListener的position和id参数做详细的解释,我相信有些人在这上面走了些弯路。 先来看一下官方的文档position The position of the view in the转载 2016-09-14 09:28:25 · 2826 阅读 · 0 评论 -
[读书笔记] Android Toast 显示时间叠加问题的探讨
在android中对于toast的显示一般有两种方法: Toast.makeText(Context, int, int).show(); Toast.makeText(Context, CharSequence, int).show();对于这两种方法第一个参数都是上下文(Context),第二个就是显示的内容,第三个是显示的时长,android给了我们时长的常量Toast.LENGTH_SHOR原创 2016-09-12 11:30:17 · 2001 阅读 · 0 评论 -
[读书笔记]Android中ImageView的ScaleType属性值(图文)
android:scaleType=”center” //图片可能被剪裁或控件未被填满,不被拉伸(1)当图片大于ImageView的宽高:以图片的中心点和ImageView的中心点为基准,按照图片的原大小居中显示,不缩放,用ImageView的大小截取图片的居中部分。(2)当图片小于ImageView的宽高:直接居中显示该图片。android:scaleType=”centerCrop” //原创 2016-09-08 19:53:04 · 608 阅读 · 0 评论 -
[读书笔记]Android中Animation的Interpolator插值器详解(图文)
Interpolator属性是Animation类的一个XML属性,所以alpha、scale、rotate、translate、set都会继承得到这个属性。Interpolator被译为插值器,他是一个指定动画如何变化的属性, 我们看下api,他的系统值: 意义:AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速原创 2016-09-11 13:49:49 · 5002 阅读 · 0 评论 -
[读书笔记]Android中的TableLayout
在Android中,TableLayout,表格布局采用行列形式管理UI组件,TableLayout不需要声明有多少行和列,而是通过添加TableRow或其它组件来控制表格的行数、列数。每向TableLayout添加一个TableRow,就是在向表格添加一行,TableRow也是容器,可以向TableRow中添加组件,每添加一个组件,即是添加一列。如果直接向TableLayout添加组件,则认为这个原创 2016-09-09 09:59:17 · 531 阅读 · 0 评论 -
Android IntentService完全解析 当Service遇到Handler
一 概述大家都清楚,在Android的开发中,凡是遇到耗时的操作尽可能的会交给Service去做,比如我们上传多张图,上传的过程用户可能将应用置于后台,然后干别的去了,我们的Activity就很可能会被杀死,所以可以考虑将上传操作交给Service去做,如果担心Service被杀,还能通过设置startForeground(int, Notification)方法提升其优先级。那么,在Service转载 2016-09-20 22:46:23 · 472 阅读 · 0 评论 -
一个好用的日志管理工具类MyLogger
日志的规范管理,在项目中不容忽视,应用上线后将调试日志关闭也是十分必要的,下面就是一个好用的日志管理工具类(点击下载):import java.util.Hashtable;import android.util.Log;/** * The class for print log * @author kesenhoo */ public class MyLogger {转载 2016-08-26 18:54:13 · 3989 阅读 · 0 评论 -
Android5.1.+ getRunningAppProcesses()获取运行中进程(第三方开源库)
google可能为了安全考虑,在5.1.+后调用activitymanager.getRunningAppProcesses()方法只能返回你自己应用的进程,那如何在5.1.+后获取运行中进程呢?一个大神stackoverflow给出了答案(点击跳转)。如果你能熟练的导入第三方库,那么相信你可以不用向下看了,如果你选择向下看,那我会用白话文教你一步步实现。首先到这位答主的github上下载他上传的开原创 2016-08-18 00:44:11 · 16486 阅读 · 9 评论 -
Channel is unrecoverably broken and will be disposed!
在Android的联网操作中,出现Channel is unrecoverably broken and will be disposed! ,当时的内心是崩溃的,浏览器连接没问题啊!,然后检查了一遍又一遍的代码,后来知道了,一般出现这种错误是流的操作出现了问题,当时我的代码是 String path="http://192.168.56.1:8080/androidgetimage/106.jp原创 2016-03-26 10:36:50 · 7875 阅读 · 0 评论 -
ExecException: Process'command'E:\jdk1.8.0_60\bin\java.exe'' finished with non-zero exit value 2
今天写东西,要用到HttpClient的jar包,然后我就在android studio导入这样一群的jar包,(是的,我把他们全部导入了!!) 然后就报错了Error:Execution failed for task':app_downloadfile:transformClassesWithDexForDebug'.> com.android.build.api.transform.原创 2016-03-30 10:48:45 · 2416 阅读 · 0 评论 -
app_downloadfile:transformResourcesWithMergeJavaResForDebug
其实我在导包过程中,不光遇到了上篇博文的问题,还遇到了,这个错误Error:Execution failed for task ':app_downloadfile:transformResourcesWithMergeJavaResForDebug'.> com.android.build.api.transform.TransformException: com.android.builder原创 2016-03-30 10:58:16 · 1284 阅读 · 0 评论 -
repo下载国内链接android源码
刚好碰到要下载一个指定版本的android源码,在网上没有找到,所以只能自己去下载,看了谷歌官方下载帮助但是苦于墙抽风,下载速度也奇慢,所以找了几个国内的源头下载,那么跟着我动起来,在这之前你需要一台装有linux的电脑或者是虚拟机上装有linux也是可以的. (一).科普一下git与repo的区别 1. Git:Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项原创 2016-05-08 23:52:49 · 10572 阅读 · 3 评论 -
Android Studio中的跨进程访问(aidl)
服务端 创建一个MyService继承Service并在Manifests.xml中注册,因为服务器不需要界面,我将Activity删除了,记得同时将Manifests.xml中的Activity注册删除,右键创建AIDL文件,创建完成后将和java在同一个路径下 IService.aidl// IService.aidlpackage com.example.yuxin.servi原创 2016-07-01 11:59:24 · 825 阅读 · 0 评论