移动开发方向专家
一直以为我们写好的程序都需要预先编译好,然后再运行,直到今天在看书的时候才看到书上说JAVA1.6之后可以动态的编译JAVA文件,这着实让我高兴了一把,为什么这么兴奋呢,我一心想着能用技术实现动态更新APK,不用一次次的发布打包,有了动态加载,可以说是成功了一大截。
原文地址: http://stormzhang.com/android/2015/05/26/android-tools/ 一晃好久没更新博客了,最近一个月真的很忙,因为公司在准备C轮融资,公司的发展到了一个关键的阶段,自己全部精力投入在公司产品上,这个状态可能还会持续一段时间,今天忙中抽闲来给大家分享下我们最近在项目中采用到的一些能帮助团队提升工作效率的几个Android Studio插件和工具。
有时候我们会有这么一个需求,在Listview的某个Item上有个按钮,点击这个按钮之后呢,需要对其它的item做一些操作,就像下面这个: 采纳按钮点击之前:采纳按钮点击之后: 简单介绍一下这两张图的意思: 模拟了一个Listview,在每个Item上都有一个“采纳”按钮,当点击其中一个“采纳”之后,需要将其它“采纳”按钮隐藏,并且自身需要改为“已采纳”,如后面的图所示。
为什么要说这个问题呢,这段时间还是在SeekBar上遇到一些问题,好像ADT并没有给seekBar在xml中提供enabled属性,虽然我们可以在代码中设置,但是它并不能实现下面这个需求,所以我们需要找到别的方式去实现它,也为了能更好的了解一下dispatchTouchEvent与onTouchEvent之间的关系。
在我们开发的时候常常需要更改原生控件的默认效果,有时候某些控件改起来挺费劲的,比如SeekBar的背景与其ProgressBar的进度粗细或者thumb居中现实与否如果弄错,都是个大麻烦,我曾经就为thumb的居中显示问题浪费了很多很多的时间,后来以别的笨拙的办法解决了,现在重新回来看,决定下决心整一下,看看到底是怎么回事。
原文转自:http://coolpers.github.io/multidex/2015/04/13/multidex.html 1.MultiDex的产生背景 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。
这两天在Android开发者网站上查东西的时候发现有中文的搜索结果,点开结果全是中文的,以后可以畅通无阻的看文档了,快来围观。
平常我们开发的时候需要使用到动态注册广播,如果在一个类内注册很多的广播代码就会既冗余又乱糟糟的,就像这样: msgReceiver = new NewMessageBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(EMChatManager.
前言: 通常我们有时候会直接使用ADT工具直接新建一个Activity页,而这个Activity我们又无法更改它的父类,那遇到这种情况该如何处理呢?其实很简单,好,看如何来解决这个问题: 先来看看这个问题出现的情况,我们以SettingsActivity举例: 上图是Setting...
前文http://blog.csdn.net/sahadev_/article/details/49072045虽然讲解了LayoutInflate的整个过程,但是其中很多地方是不准确不充分的,这一节就详细讲一下我们上一节遗留的细节问题,我们遗留的问题有这些: 1.
我们在Activity开发的时候天天会用到这个方法,有时候还需要根据需求在setContentView调用的时候做一些动作,因此我们就需要知道它内部是如何工作的,我们来一起看一下: setContentView有三个重载方法: public void setContentView(int layoutResID) { getWindow().
我们在开发的时候经常会遇到各种异常,当程序遇到异常,便会将异常信息抛到LogCat中,那这个过程是怎么实现的呢? 我们以一个例子开始: import android.app.Activity; import android.
二话不说,先上效果图: 这个图是什么意思呢,有没有看到一直在变颜色啊,有没有很像星云变幻呢,有没有很炫,快来看看怎么实现的吧! 这是我们要被处理的原图,实现方式就是通过不断的改变这张图的色相从而达到效果: 贴布局文件: ...
HTTPS主要用于安全传输数据,从代码的角度来看,HTTPS主要使用了X509的方式进行了加密,至于密钥(证书)在什么地方,可能在购买HTTPS服务的时候被统一放置在DNS服务器之类的地方了吧(纯推测): package com.
package com.sahadev; import java.security.KeyFactory; import java.security.KeyPair; import java.
package com.sahadev; import java.security.KeyFactory; import java.security.KeyPair; import java.
注释都在代码里了,干了: import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.
MAC算法主要用于消息验证 以下为算法实现: import javax.crypto.KeyGenerator; import javax.crypto.Mac; import javax.
import java.security.MessageDigest; import javax.xml.bind.annotation.adapters.HexBinaryAdapter; public class Main { static String src = "Hello...
本实现方式基于JDK 1.8 实现: import java.util.Base64; import java.util.Base64.Decoder; import java.util.
在我们平常开发的过程中在做引导页适配的时候,有时候会犯难,怎么样作图可以将各种不同尺寸分辨率的手机都适配好也就是不变形不拉伸,官方给的说法也只是做多套图去适配不同的分辨率,遇到全屏展示引导这种问题的时候就有些力不从心了。
今天终于把代码下载完成,特此开一篇博文记录一下。上图: 为了下载这些源码,历时5天5夜,说为什么这么长时间,是因为太容易中断了,有时候下一晚上可能就一直没在下,在你入睡的时候它就自己断了,趁着这个周末有时间一直在电脑旁白看着它下完,中途也是挺曲折的,磁盘空间不够用了(我的是40个G,不够用),各种折腾,最后才把30多个G的代码及临时文件移动到其它磁盘(Windows下使用的普通磁盘),继续下载完毕。
我们在ActivityStack类中可以看到某个方法用于返回当前任务栈顶端的ActivityRecord对象,如果栈是空的,就返回null,ActivityRecord用于代表在历史任务栈中的一个Activity对象的信息。
在我们平常开发的时候会有许多状态按钮,比如state_pressed,android:state_checked,或者就正常状态等等,我们做这样的效果通常需要三个文件,一张是按下的图片,一张是正常状态的图片,一张是管理它们的selector文件,如果在不断更新迭代的过程中出现了很多这样的按钮,而且它们的颜色什么的都不一样,那我们的res/drawable文件夹下就会出现很多个这样的组合文件,导致我们的程序越来越大、越来越大,这肯定不是我们想看到的。
有些时候需要将res中的资源文件加载进来然后做一些修改,然后再赋值给控件使用,比如这样: Drawable drawable = getResources().getDrawable(int id); 现在我需要把资源文件id所对应的Drawable对象加载进来,然后做向下转型处理,如果我...
今天看到淘宝客户端的某个页面效果,效果是在两个Activity中做动画,为了知道究竟是不是在同一个Activity中做的效果,就必须采取一种手段来知道是不是同一个Activity.描述一下这个动画效果:列表页面点击图片,图片会滑动到下个页面的顶部,这就涉及到一个问题,如何在两个Activit...
很早之前为了给学生讲明白整个消息队列是怎么个情况,于是大概阅读了一下消息队列的整个工作过程,鉴于网上大部分都是文字说明,没有一个图例,于是做出了下面这张图,权当作以后复习之用,也供大家学习参考,有什么不整确的请指正。
昨晚带女友Android入门,她本是照着一本书敲得,可以运行,后来她自己凭思维自己写了一个,然后出现了值没有传过来的问题,然后简单的了解了一下Intent是如何传递数据的。 我们的例子是这样的: 由A Activity通过startActivityForResult方法启动B Activ...
今天出去面试,被面试官问到一个问题,说是如果使用LayoutInflate.inflate(int resource, ViewGroup root, boolean attachToRoot);这个方法与AbsListView的实现类结合使用的话,会出现什么问题,先看简单的使用过程:@Ov...
转载前请标明出处:http://blog.csdn.net/sahadev_ 先上一下示例图: 这是默认状态下:这是通过反射后修改的结果: 在解决这个问题之前首先需要了解一下AlertDialog的基本构造,所以先从源码看起: 想要知道为什么显示不全,首先入口处应该是这里: builder.
转载请标明出处!http://blog.csdn.net/sahadev_/article/details/23839039 ,当然一般也没人转载。。。 一直想彻底了解View的事件分发过程,在网上也看了很多大神的博客,但是总有一些东西不是很明白,于是自己就根据源码画了一个流程草图,思路总算是清晰了。
转载时请注明出处,尊重他人的劳动成果,谢谢。 先附上效果图: 这个控件是动态加载到75%的,主要我忘了怎么做动态图,就先放一个静态图在这里表示表示。旁边这个没有没有喜欢的?有想知道的 我可以告诉答案。
转载时请注明出处,尊重他人的劳动成果,谢谢。 废话不多说,先上图演示下成果(图有些丑,别见怪): 最近一直在研究Scroller类的使用方法,看了很多遍别人的例子总是感觉不得要领,最后还是自己实践一下,这个控件的灵感来源于stackoverflow上一个人的提问,就是这种可扩展的TextView,当然,人家那个很好看,那时候感觉很神奇,自从知道Scroller这个类之后就拿它来练练手吧,大伙可以随意更改它的效果,配对了很好看的。