svg使用技巧 SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics)。其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。
java Thread 线程(Thread)是CPU调度和分派的基本单位。线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程的使用有继承Thread,和传入Runnable,FutureTask等方式2、传入runnable参数3、传入FutureTask参数跟runnable不同的是通过FutureTask.get()可以获取线程执行的返回结
android AsyncTask详解 AsyncTask是Android中用来执行异步执行耗时操作的框架。继承AsyncTask,并且实现doInBackground方法。其中doInBackground中进行耗时操作,比如网络请求,文件读取等。如下方法执行AsyncTask,execute方法必须在ui线程中进行,2、AsyncTask实现从AsyncTask的execute方法进行分析启动AsyncTask的方法,源码如下AsyncTask默认的Executor是sDefaultExecutor,看下sDefaultExecutor
Android service service类型android中service分为background service,bound service,foreground servce,其中background service运行在后台与ui没有交互,bound service通过service connect可以跟activity等通过binder进行数据交互,也可以进行多进程通信。 Foreground service与notification绑定,通过notification通知用户。暂时无法在飞书文档外展示此内容1、fore
android aidl 1、什么是aidlAidl 全称Android Interface Definition Language,Android接口定义语言,用于定义进程之间通信协议。2、进程通信Android中系统提供了很多服务,例如AlarmManager,NotificationManager等,这些服务都在system server进程中,Android中应用有自己的进程,如下图:application所在进获取服务时需要跟system server进程进程通信。当应用想要获取AlarmManger服务时可以通
Android弹性webview实现和冲突解决 弹性webview要实现webview上下滑动到顶部时做弹性动画,最终的实现效果如下:实现方案1、自定义弹性scrollview嵌套webview1、定义HScrollView继承NestedScrollView并且重写onTouchEvent方法,在onTouchEvent中处理动画。根据事件的顺序,可以在move事件中对scrollview进行弹性处理,在up中进行回弹处理,代码如下: override fun onTouchEvent(ev: MotionEvent): Boole
webview之JSB通信原理 1、前言在这个移动互联网盛行的时代,移动应用的开发就需求量剧增,早期的移动端应用大都使用原生开发(android,ios),而现在的移动开发技术选型上基本都是混合开发(Hybrid),混合开发是一种开发模式,指使用多种开发模型开发App,通常会涉及到两大类技术:原生Native、Web H5。2、WebViewA View that displays web pages.webView是移动端(原生)提供的运行web的环境,它是一种嵌入式浏览器,原生应用可以用它来展示网络内容。可与页面JavaSc
BottomSheetDialogFragment实现弹出和消失自定义Spring动画 想要给BottomSheetDialogFragment的弹出和消失加spring动画1、遇到的问题由于是spring的动效,无法使用下面设置windowAnimations的方法来@Overridepublic void onActivityCreated(Bundle arg0) { super.onActivityCreated(arg0); getDialog().getWindow() .getAttributes().windowAnimations = R.st
可以折叠Gridview 可以折叠Gridview实现原理1、折叠实现重写gridview的setAdapter方法 @Overridepublic void setAdapter(ListAdapter adapter) { if (foldNm > 0) { //进行折叠 adapter = new FoldViewGridAdapter(adapter, foldNm); } super.setAdapter(adapter
Android调试技巧 1、定位activity有时候看到页面但是不知道页面相关的代码在哪,可以用下面两种方法快速定位1、layout inspectorLayout inspector中会已窗口的形式展示当前的activity2、adb可以通过adb打印当前显示的activity也有两种方式1、 adb -d shell dumpsys activity activities | grep mResumedActivity打印的log如下:hanking@C02CP0QNMD6V Noted-Android
asm实现注解打印log hanno_ _| | | | | |__| | __ _ _ __ _ __ ___ | __ |/ _` | '_ \| '_ \ / _ \| | | | (_| | | | | | | | (_) ||_| |_|\__,_|_| |_|_| |_|\___/通过字节码插件实现注解打印log,注解可以加在类上面,也可以加在方法上面,当加在类上面时会打印全部方法的log,当加在方法上面时打印当前方法的logHann
自己动手写Android内存泄漏检测工具 内存泄漏检测对于Android来说主要泄漏的对象是activity和fragment,检测activity或者fragment的泄漏方式简单流程如下:上面的流程主要是:1、监听activity/fragment的生命周期的onDestroy事件。2、监听到activity/fragment的onDestroy后主动发起一次Gc,对象会在Gc后被回收,发起Gc后就可以针对对象是否被回收来判断是否有内存泄漏3、判断activity/fragment是否被回收4、如果有内存泄漏,生成一个内存泄漏的数据
Android clippling使用 Android clippingClipping在Android中如果多个view嵌套的会引起overdraw,很多时候一些view被覆盖了,对用户是不可见的,但是依然会进行绘制,这个时候使用clipping来进行对不可见区域进行裁剪,可以减少overdraw提高gpu的效率。如下图所示:使用clipping rectangle就可以实现对view的裁剪。使用clipping能达到的效果clipping的使用也很简单:1、裁剪出想要渲染的部分canvas.clipRect(clipRect
activity启动模式你所不知道的异常情况 前言虽然了解activity的四种启动模式,但是在一些复杂场景下,各种启动模式会出现的现象,以及现象的原因可能并不清楚,再加上个taskAffinity launchMode clearTaskOnLaunch 这些参数会使得更加懵逼。所以根据在实际应用中遇到的问题总结一下。task 和 Back Stack要了解activity的启动模式,必须要先了解task以及back stack,这两个概念,因为activity不同启动模式下不同表现是跟这两个密切相关的。back stack:存放activi
Canvas加动画,实现火柴人跳绳效果 canvas加动画class PathDrawable extends Drawable implements AnimatorUpdateListener { private Path mPath; private Paint mPaint; private ValueAnimator mAnimator; public PathDrawable() { mPath = new Path(); mPaint = new Paint();
android实现音乐跳动效果 效果图使用方法<com.masoudss.lib.DanceView android:id="@+id/danceView" android:layout_width="320dp" android:layout_height="300dp" android:layout_gravity="center" app:color_center="@color/r
android中hprof文件分析 Hprof基本概念hprof最初是由J2SE支持的一种二进制堆转储格式,hprof文件保存了当前java堆上所有的内存使用信息,能够完整的反映虚拟机当前的内存状态。格式Hprof文件由FixedHead和一系列的Record组成,Record包含字符串信息、类信息、栈信息、GcRoot信息、对象信息。每个Record都是由1个字节的Tag、4个字节的Time、4个字节的Length和Body组成,Tag表示该Record的类型,Body部分为该Record的内容,长度为Length。Android