![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android开发
文章平均质量分 52
寒江蓑笠
这个作者很懒,什么都没留下…
展开
-
Java多线程-生产者消费者几种实现方式
http://blog.csdn.net/monkey_d_meng/article/details/6251879wait()/notify()方法http://blog.csdn.net/ghsau/article/details/7433673 public void doWork(){ new Thread(new Runnable() { @O原创 2016-06-02 16:53:20 · 1799 阅读 · 0 评论 -
Android 动画--使用Path来规划动画的轨迹
使用Path来规划动画的轨迹 public void testPathAnimator(){ final FrameLayout l = (FrameLayout) findViewById(R.id.root_view); final ImageView imageView = new ImageView(this); imageView.set原创 2016-07-11 10:35:57 · 9746 阅读 · 2 评论 -
自定义对话框样式的Activity
对话框样式的Activity,除了使用系统的Dialog样式的Theme外,我们还可以自己设置Window的参数来进行自定义。 SecondActivity.javapublic class SecondActivity extends AppCompatActivity { public static final double SMALL_WIN_H_SCALE = 0.67;原创 2016-11-23 16:06:07 · 2712 阅读 · 0 评论 -
可能是讲解Android事件分发最好的文章
http://mp.weixin.qq.com/s/GUcGzJuRwTdTZgGU3fcTPQ原创 2016-12-09 12:36:11 · 419 阅读 · 0 评论 -
Android 矢量图(VectorDrawable)及动画(AnimatedVectorDrawable)
VectorDrawable矢量图形的优点在这里就不再多介绍了,并且矢量图形在安卓的Lollipop中已经实现了,相关的类就是VectorDrawable。 下面先通过一个小例子来看一下VectorDrawable的运用 layout: main.xml<ImageView xmlns:android="http://schemas.android.com/apk/res/android原创 2015-09-30 16:39:50 · 3451 阅读 · 0 评论 -
Android动画-实现雪花飞舞动画效果
雪花飞舞原创 2016-12-06 09:57:02 · 1813 阅读 · 0 评论 -
Java覆盖、重载、隐藏相关知识
覆盖发生在子类与父类的之间,指在在子类中声明一个和父类具有相同的方法名,参数列表,返回值,访问权限等的方法,即在子类中重新编写方法实现的功能。 构成覆盖需满足以下条件:父类中的static方法不可以被覆盖;父类中的final方法不可以被覆盖;方法的签名、参数个数以及参数类型都要相同; 对于返回类型要说明两点: 1.如果返回类型是引用类型,则覆盖方法的返回类型可以声明为父类方法声明的返回类原创 2016-06-20 16:24:45 · 455 阅读 · 0 评论 -
Bitmap对象在内存中的大小和转化为字节流的大小
Bitmap对象在内存中的大小比如我们构造Bitmap时设置宽200,高400,色彩模式为Bitmap.Config.ARGB_8888,那么它在内存中的大小就为200*400*4,色彩模式为Bitmap.Config.RGB_565,那么大小就是200*400*2,这些在内存中是固定大小的。转化为字节流比如我们用bitmap.compress(Bitmap.CompressFormat.PNG,1原创 2016-02-25 17:33:05 · 3348 阅读 · 0 评论 -
Android数据格式化
1、文件大小格式化: Log.d(TAG, Formatter.formatFileSize(this, 100)); //100 B Log.d(TAG, Formatter.formatFileSize(this, 1024*2)); //2.00 KB Log.d(TAG, Formatter.formatFileSize(this, 10000000)); //9原创 2014-07-08 20:04:15 · 1885 阅读 · 0 评论 -
Android 颜色操作(对比、混合)
1、Android 颜色对比 /** Calculates the constrast between two colors, using the algorithm provided by the WCAG v2. */ public static float computeContrastBetweenColors(int bg, int fg) { fl原创 2015-06-15 10:21:08 · 2879 阅读 · 0 评论 -
Android硬件渲染之LockCanvas()
在实际开发中或许你有下面的经历: 尽管已经设置了硬件加速,通过TextureView.lockCanvas()或者通过SurfaceView.getHolder().lockCanvas()得到的Canvas通过打印Canvas.isHardwareAccelerated()会返回false。而TextureView.isHardwareAccelerated()或者SurfaceView.isH原创 2016-11-14 19:50:16 · 4885 阅读 · 0 评论 -
Interpolator使用基础
getInterpolationgetInterpolation(float input)就像是我们根据x求函数值的y一样,可以用到我们需要的各种场景。PathInterpolator mPathInterpolator = new PathInterpolator(0.67f,0f,0.77f, 0.43f); for(float p = 0f; p<1.0f; p+=0.1f){原创 2016-10-24 11:33:08 · 586 阅读 · 0 评论 -
Android 一种遍历ViewGroup的方法
// 遍历viewGroup public void traversalView(View view) { if(null == view) { return; } if(view instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup)原创 2016-08-24 19:28:57 · 5276 阅读 · 0 评论 -
Android Studio 调试技巧
http://mp.weixin.qq.com/s?__biz=MzA3MDMyMjkzNg==&mid=2652261742&idx=1&sn=77346b3f4359fac7686f08a78aa7290f&scene=0#wechat_redirect http://android.jobbole.com/83282/原创 2016-06-08 11:46:43 · 633 阅读 · 0 评论 -
Android在非UI线程中更新UI的方法
1、使用Thread+Handler实现非UI线程更新UI界面原创 2014-07-16 09:43:14 · 1594 阅读 · 0 评论 -
Java类加载和初始化相关知识
《深入理解Java虚拟机++JVM高级特性与最佳实践》类的初始化类从被加载到虚拟机内存中开始,到卸载出内存开始,它的生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载七个阶段,其中验证、准备和解析三个部分统称为链接。 什么情况下需要开始类加载过程的第一个阶段:加载。虚拟机规范中并没有进行强制约束,这点可以交给虚拟机的具体实现自由把握。但是对于初始化阶段,虚拟机规范则是严格规定了有且只有四种原创 2016-06-09 18:08:14 · 451 阅读 · 0 评论 -
常用正则表达式示例
1.替换连续的重复字符串: String test = "www....baidu.com"; String t = test.replaceAll("[.]+",".");替换www….baidu.com为www.baidu.com2.多重匹配: private static final Pattern BAIDU_URL_PATTERN =原创 2016-06-29 14:39:27 · 497 阅读 · 0 评论 -
一个查看贝塞尔曲线效果的网站
http://cubic-bezier.com/#.45,0,.21,1原创 2015-09-01 17:34:39 · 11253 阅读 · 0 评论 -
Android Service相关知识
android:process属性碰到Service加上android:process后Application的onCreate方法执行两次的问题。 android:process是服务所在进程的名字。通常,一个应用的所有组件都运行在系统为这个应用所创建的默认进程中。这个默认进程是用这个应用的包名来命名的。 标签的process属性可以设置成和所有组件都不同的默认值。但是这些组件可以通过设置自己原创 2016-05-03 09:42:10 · 461 阅读 · 0 评论 -
Java实现AES加密解密
public class AESUtils { private static final String KEY_ALGORITHM = "AES"; private static final Charset charset = Charset.forName( "utf-8" ); private static String decrypt( byte[] data, byte[原创 2016-06-20 15:34:52 · 557 阅读 · 0 评论 -
Java实例初始化过程
Java实例初始化过程转载自http://mp.weixin.qq.com/s?__biz=MjM5Mzk3MzA4MA==&mid=2651366281&idx=3&sn=fe98210a7115afff01b35da044a71ea9&scene=0#wechat_redirect 文章通过Java字节码从下面几个场景来分析Java实例的初始化过程:成员+构造函数成员+代码块+构造函数静原创 2016-05-04 09:57:56 · 592 阅读 · 0 评论 -
Android 自定义AlertDialog
自定义AlertDialog ContentView、Position 效果图: 代码: public void showCustomDialog(){ LinearLayout customView = new CustomDialogView(this); AlertDialog mDialog = new AlertDialog.Builder(thi原创 2016-08-09 16:23:23 · 1417 阅读 · 0 评论 -
Android自定义Attribute和Style
custom attributes and styles自定义属性自定义一个CustomView(extends View)类编写values/custom_attrs.xml,在其中编写styleable和item等标签元素在布局文件中CustomView使用自定义的属性(注意namespace)在CustomView的构造方法中通过TypedArray获取custom_attrs.xm原创 2016-05-12 17:33:36 · 2101 阅读 · 0 评论 -
浏览器应用开发常用知识
1浏览器生成默认UAAndroid浏览器的UA的生成实在android.webview.WebSettingsClassic.getCurrentUserAgent()中,会根据Build.VERSION.RELEASE,Build.MODEL等来生成系统版本和机型等信息来组装生成UA原创 2014-11-05 16:19:08 · 1297 阅读 · 0 评论 -
使用CrashHandler来获取应用的oom crash信息
Android应用开发中不可避免地会发生崩溃,特别是在用户使用过程中,一些特定场景的偶然概率的crash会通常让开发者抓狂。幸运的是Android提供了处理这类问题的方法,当App Crash时,我们可以记录下Crash的原因或者是一些设备信息,并上传到服务器供开发者分析,以便开发者迅速定位问题原因。 实现这个功能我们需要实现Thread.UncaughtExceptionHandler这个接口。原创 2017-02-21 11:17:51 · 1534 阅读 · 0 评论 -
Android:关于Drawable的缓存机制应该了解的知识
问题演示下面我们通过一个实例来演示一个我们在使用Drawable过程中经常会遇到的一个问题。首先贴出UI布局文件,这里放了两个 ImageView,它们的寬高不一样,而且对他们加以蓝色的背景。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:mz="http://s原创 2017-06-15 13:05:10 · 3662 阅读 · 0 评论 -
Android:使用JitPack发布Github开源库
JitPack 是一个发布流程非常简单的自定义的 Maven 仓库,可以用来发布自己的 JVM 或者 Android 开源库。 JitPack 的官方文档在这里 Publish an Android library。 参考我的Github上面一个开源项目。 下面来介绍一下使用JitPack发布一个开源项目的步骤。GitHub准备代码准备首先将需要发布的library工程准备好。 打开根目录的原创 2017-07-24 10:14:24 · 1419 阅读 · 0 评论 -
Android Studio常用插件
0.Android Studio 插件的安装Android Settings -> Plugins (现实已经安装的插件)-> Browser repositories ,选择需要安装的插件,点击 Install plugin就可以了。1. adb-ideahttps://github.com/pbreault/adb-idea 通过该插件可以不需要手动输入 adb 命令完成以下操作: Unin原创 2016-02-29 11:03:17 · 478 阅读 · 0 评论 -
Java 反射使用
1.获取属性值 public void getFiled(){ TestA a = new TestA(); try { Field field = TestA.class.getDeclaredField("mTestBoolean"); field.setAccessible(true);原创 2016-02-01 16:48:18 · 605 阅读 · 0 评论 -
使用 TaskDescription 定制任务管理器 Title
概述最近有个需求,就是要代码动态修改 APP 在任务管理器中名称显示,不要问我问什么有这样的需求,因为需求就这样。哈哈…… 对于如何控制 APP 在任务管理器中的 Title,我们可能知道,可以通过在 AndroidManifest.xml 中设置 application 或者主 activity 的 android:label 来实现,而且 activity 的优先级高于 application原创 2017-10-18 18:42:33 · 3650 阅读 · 1 评论 -
Android定时器实现方法
1.用Handler来实现 private void startTimer(){ mHandler.removeMessages(UPDATE_MSG); mHandler.sendEmptyMessage(UPDATE_MSG); } private void stopTimer(){ mHandler.removeMessage原创 2015-10-09 10:39:11 · 606 阅读 · 0 评论 -
Android应用开发常用知识(3)
根据Intent获取包名 public static String getAppPackageByIntent(Context context, Intent intent) { if (context == null || intent == null) { return ""; } String pkgNa...原创 2016-06-14 15:18:10 · 913 阅读 · 0 评论 -
Android应用开发常用知识(4)
Android string 中product的使用Android的资源文件string.xml会出现下面同名的字符串:string name=&quot;build_type&quot; product=&quot;tv&quot;&gt;&quot;智能电视&quot;string&gt;string name=&quot;build原创 2016-12-01 11:47:03 · 1790 阅读 · 0 评论 -
使用LayoutInflater应该注意的问题
我们通常使用addView这个方法时,会先通过LayoutInflater的inflate生成一个View视图,然后添加到当前ViewGroup中,如果使用不恰当,就会出现这样的问题: setContentView(R.layout.layout_inflate_test); LinearLayout viewGroup = (LinearLayout) findVie原创 2017-02-15 09:56:51 · 707 阅读 · 0 评论 -
Android:一个Multidex引发的VerifyError和Class Not Found问题
一个困扰两天的问题终于解决了,下面记录一下该问题解决的历程,希望能对那些遇到类似问题的猿们有些帮助。问题背景由于项目要适配android4.X,而应用需要引用的一个jar包的4.X版本就只能用JDK1.6来编译,而应用要用JDK1.7来编译,这个情况也为该问题的解决带来了干扰。 当把编译好的jar包放入应用中,且应用编译通过,运行时报各种问题:java.lang.VerifyErrorjava.原创 2016-03-24 19:20:18 · 9048 阅读 · 1 评论 -
Android应用开发常用知识(2)
1、关于android.permission.STOP_APP_SWITCHES权限http://blog.csdn.net/ixiaobu/article/details/18226917如果你想通过Service把home到后台的Activity启动到前台来,你有两种办法:1)、startActivity(i)的方法 Intent i = new Inte原创 2014-09-27 16:07:00 · 4811 阅读 · 0 评论 -
Android 3D旋转动画实现
利用Android的ApiDemos的Rotate3dAnimation实现了个图片3D旋转的动画,围绕Y轴进行旋转,还可以实现Z轴的缩放。点击开始按钮开始旋转,点击结束按钮停止旋转。 代码如下::Rotate3dAnimation.javapublic class Rotate3dAnimation extends Animation { private final fl原创 2013-11-30 18:00:31 · 2174 阅读 · 0 评论 -
Android.mk语法规范
总结一下Android.mk的写法,供以后使用。例子可以先看一个例子:LOCAL_PATH:=$(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= \ NmpMediaBase.cpp LOCAL_CPPFLAGS+= -Wall -W -Wno-format \ -Os -O2 -fm原创 2013-09-26 12:08:06 · 4302 阅读 · 0 评论 -
Android 多CPU架构支持所需要了解的知识
前言Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。ABI是指应用基于哪种指令集来进行编译。 如果项目中使用到了NDK,它将会生成.so文件,Android应用支持的ABI取决于APK中位于lib/AB原创 2017-02-24 10:08:31 · 3036 阅读 · 0 评论 -
Android内存泄露检测(LeakCanary)
在Android中检测内存泄露,除了我没熟知的MAT分析外,还有另外一种方法公选择:LeakCanary leakcanary是一个由著名的GitHub开源组织Square贡献的开源项目。 使用方法比较简单: 在 build.gradle 中加入 dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android原创 2015-10-09 14:42:07 · 1079 阅读 · 0 评论