
Android
minwenping
这个作者很懒,什么都没留下…
展开
-
AndroidStudio 如何引入第三方so库【最新亲测可行】
在做Android JNI 或者NDK混合开发调试的时候,用AndroidStudio 的效率明显要高于在Android 源码中用Android.mk的编译so,push到机器 上测试。源码增量编译时间和来回替换时间效率太低了,尤其是碰到服务器很卡的时候,简直要命。而且在AndroidStudio中开发c/c++的提示功能明显要好于在vs code中的提示情况。AndroidStudio时如此的丝滑和流程,所以我就把这种c/c++ 混合java 的开发调试全部挪到本地。优快云 上流传最多的一篇链接原创 2021-12-23 22:04:27 · 10176 阅读 · 5 评论 -
Android.bp 拷贝权限xml文件到
以前在做AndroidFramework的时候,有经常做系统动态jar 包,其中有一8.0项工作是拷贝权限的<?xml version="1.0" encoding="utf-8"?><permissions> <library name="localconfigjni.xml" file="/system/framework/LocalConfigJNI.jar"/></permissions>permissio原创 2021-08-19 22:31:17 · 2073 阅读 · 2 评论 -
DataBinding事件绑定【二】
DataBinding事件绑定有两种方式 Method References(方法引用)和Listener Bindings(事件监听) 就先view设置点击事件也有两种方式view.setOnClickListener(View view)以及在XML中定义android:onClick=”“。 简单运行了textview和button的点击效果如下: //XML代码如下<?xml ve原创 2017-07-29 21:02:45 · 2304 阅读 · 1 评论 -
DataBinding祛除findviewbyid和数据绑定【一】
一。使用限制条件: 【1】最低兼容到android 2.1 (API level 7+). 【2】Gradle至少是1.5以上 二。databinding主要是用来提高开发效率,初步使用特点是祛除了大量的findviewbyid。完全隔离view和业务逻辑 三。怎么使用,首先在 module的gradle文件中配置如下代码 dataBinding{ enabled=true原创 2017-07-29 15:17:15 · 954 阅读 · 0 评论 -
Path绘制动态的贝塞尔曲线、PathMeasure来绘制path动画
上一篇的波浪曲线是左右重复平移,这次是每一帧绘制一条线,组成上下浮动的曲线,下面是效果图 public WaveView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); paint = new Paint(Paint.ANTI_ALIAS_FLAG);原创 2017-07-05 20:54:48 · 699 阅读 · 0 评论 -
MaskFilter(滤镜)BlurMaskFilter(高斯滤镜)和EmbossMaskFilter(浮雕滤镜)的简单介绍和使用
*官方介绍:***MaskFilter is the base class for object that perform transformations on an alpha-channel mask before drawing it. A subclass of MaskFilter may be installed into a Paint. Blur and emboss are imp原创 2017-06-25 18:05:39 · 2756 阅读 · 0 评论 -
shader(LinearGradient线性渲染器)仿今日头条加载刷新
先看看效果效果图仔细对比之后发现和今日头条的有点不一样, 第一字体是向右倾斜的 //设置字体向右倾斜 paint.setTextSkewX(0.25f);更改后的 <com.example.administrator.meterialdesignpaintdemo.GridentText android:text="你关心的才是头条" android:t原创 2017-06-25 10:39:54 · 540 阅读 · 0 评论 -
shader渲染器(BitmapShader 、LinearGradient 、RadialGradient )简单介绍
shader 渲染器,有如下四中渲染器 * BitmapShader 位图渲染器 * ComposeShader 组合渲染器 * LinearGradient 线性渲染器 * RadialGradient 环形渲染器 * SweepGradient 梯度渲染器 官方文档介绍如下 Shader is the based class for objects that retu原创 2017-06-24 21:32:53 · 621 阅读 · 0 评论 -
Paint绘制简单的进度条
paint也是画笔,可以再canvas上绘制任意的点、线、形、色等,熟练使用paint可以组装出很漂亮的自定义控件,下面用piant画了一个简单的加载进度 绘制的时候要注意文字的宽度和位置,而是使用paint的style,比如描边,填充等。先看布局文件和attrs属性代码<?xml version="1.0" encoding="utf-8"?><resources> <declare原创 2017-06-24 11:29:54 · 616 阅读 · 0 评论 -
Path绘制贝塞尔曲线和波浪waveView
用path绘制简单的二阶贝塞尔曲线效果图如下: @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Path path=new Path(); path.moveTo(0,300); path.quadTo(waveLength/2,原创 2017-07-02 19:38:43 · 652 阅读 · 0 评论 -
关于Paint了解text绘制时的基线位置关系/测量字符的宽度
问题一:在自定义控件绘制文字的时候怎么确定文字的宽度(不是view的宽度),或者其中几个字符的宽度? 下面有两个方法,可以测量指定几个字符的宽度。 /** * @param text 测量的String * @return 返回测量宽度结果 */ public float measureText(String text) {} /**原创 2017-06-22 22:17:53 · 1289 阅读 · 0 评论 -
Loader之自定义AsyncTaskLoader<D>
Loader是android5.1新增加的api,兼容到android3.0系统。有两个子类CursorLoader和AsyncTaskLoader,CursorLoader主要是用访问系统Uri和数据库等,AsyncTaskLoader也可以完成cursorLoader的工作,异步loader一般自定义用来加载网络数据。Loader有个最重要的特点就是能默认的缓存数据,已经加载过的不会重新加载,当原创 2017-07-30 14:29:07 · 423 阅读 · 0 评论 -
scrollTo/scrollBy的区别,scroller的玩法
scrollTo是滚动到指定的位置(绝对位置),view每一次invalidate的时候,滚动的坐标都是相对起始点的。 srollBy 滚动到(相对位置),view的每一次invalidate的时候,滚动的参数都是相对上一次滚动的增加 量。 两者的共同点:都是对容器内容进行滚动,滚动容器里面的所有内容。 比如viewgrop里面有好几个控件,一起开始滚动,一起结束滚动。先看scroller的效原创 2017-07-09 17:02:22 · 809 阅读 · 0 评论 -
RecyclerView的divider的问题
recyclerview的divider的和listview不一样,也有官方的提供的API进行设置divider,代码如下: LinearLayoutManager manager = new LinearLayoutManager(this); view.setLayoutManager(manager); DividerItemDecoration divider原创 2017-07-26 15:34:41 · 1668 阅读 · 0 评论 -
Failed to transform file '**.jar' to match attributes {artifactType=android-classes} using transform
最近接手别人项目用androidStudio 3.0.0编译时发现错误如下:Could not resolve all files for configuration ':view-busipresenter:debugAndroidTestRuntimeClasspath'.> Failed to transform file 'appbase.jar' to match attrib...原创 2018-11-15 17:35:02 · 17443 阅读 · 2 评论 -
关于360插件化框架Replugin竖屏修改为横屏解决方案
预备工作去GitHub搜索replugin工程,下载replugin源码,解压如下,光标选中的部分是我们要修改的地方。1.1.20 为什么要修改Gradle因为Replugin原生的默认生成activity坑位都是竖屏的,而车机是横屏的,导致插件activity 实际效果与预期不相符,另外,在插件manifest中的activity标记横屏是无效的。1.1.21Gradle插件分类介绍...原创 2018-11-01 13:50:37 · 2092 阅读 · 7 评论 -
获取assets目录下文件的路径
关于这个问题网上很多回答都是转自下面的内容 第二种方法看代码就知道不靠谱,第一种方法感觉在后面就是不适用了。 下面是我自己做的路径获取代码:File image = getFileStreamPath("image.jpg"); File second = getFileStreamPath("second.jpg"); Log.i(TAG, "onCreate:原创 2017-11-15 20:19:02 · 40268 阅读 · 19 评论 -
android原生热修复流程和原理分析实现
首先apk就是一个压缩文件,解压apk文件的内容如下图: 安卓原生热修复主要原理图和流程图如下,我花了好长时间才绘好,中间改了好几次,应该来说是很直观明白的,其中有截取了BaseDexClassLoader的关键源码,还有DexPathList的源码 a.现将打包好的dex文件传入手机中。 b.开始撸代码(主界面) public void onClick(View view) {原创 2017-11-19 00:10:56 · 563 阅读 · 0 评论 -
Xfermode改变按钮背景或者drawable的状态颜色
按钮图标颜色随着点击改变颜色,如果用selector就会增大内存,特别是按钮背景颜色不是春色的时候,就要用到两张drawable资源。1.如果用view的api设置forceground呢?,先见这个api的前后效果 int color=ContextCompat.getColor(MainActivity.this,R.color.translunent); C原创 2017-11-13 19:22:08 · 579 阅读 · 0 评论 -
toolbar和标题和menu汇总
第一个问题:toolbar的标题栏居中问题,这里使用的是textview作为标题栏,因为这样很好控制,有的比如标题栏中是个小加载进度条,如果用toolbar的titile就不好控制了,下面是布局代码 <android.support.v7.widget.Toolbar android:id="@+id/toolbar" app:navigationIcon="原创 2017-11-02 21:51:04 · 739 阅读 · 0 评论 -
更改状态栏里面图标字体颜色
上面点击不同fragment,显示状态栏字体的不同颜色,比如“中国移动”,显示颜色不一样 亲测:在android 7.0以及以上实现起来很容易,7.0以下难以实现。 7.0以下难以实现,因为很多手机厂商都对状态栏主题重写了,除非他们公开代码,不然难以实现。为了不至于太难看,低于7.0版本的就用半透明状态栏,这样看起来不太过于突兀。//4.4系统是直接生成一个view和状态栏宽高相等,覆盖在状原创 2017-09-29 10:00:48 · 2017 阅读 · 1 评论 -
MVP的实现,后续更新mvp和databinding结合
上图是界面和运行效果,mvp的结构图如下: presenter类主要处理业务逻辑,view通过接口来和presenter交互减少耦合度,mode主要是存储数据和提供数据。—–presenter—– presenter代码/** * 业务逻辑顶层父类 * Created by Administrator on 2017/9/2. */ public class BasePresenter {原创 2017-09-03 10:46:11 · 519 阅读 · 0 评论 -
自定义控件InfoTextView展示个人信息
像上面展示信息的控件,如果用传统的textview肯定是不够的,一般人都是用布局和控件去叠加,这样效率不高,而且代码量多。/** * 如果用一般控件去堆砌看起来很麻烦 * 自定义infoTextView, * Created by Administrator on 2017-9-1. */public class InfoTextView extends TextView { pu原创 2017-09-08 17:10:57 · 857 阅读 · 0 评论 -
Meterial Design 的activity转场效果
MD设计对activity的跳转动画也有专门的senceTransition效果,简单效果图如下: 主要代码如下: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //activity转场动画要求是5.0以上才有这个效果 getWindow().requestFeature(Window.FEATURE_A原创 2017-06-10 21:36:28 · 437 阅读 · 0 评论 -
Meterial Design 自带水波纹颜色修改和reveal(揭露)动效
第一部分:.Meterial Design自带水波纹介绍,支持Android 5.0以上,介绍的是自带的水波纹效果,水波纹效果跟主题有关。先看简单效果: 布局文件的代码如下: <Button android:layout_width="200dp" android:layout_height="60dp" android:text="@string/原创 2017-06-10 15:15:18 · 1495 阅读 · 1 评论 -
Android App退出检测
app的退出检测是很难的,但是获取app“要退出”的状态就容易多了,退出的瞬间并不是真的退出了,ActivityManager要销毁activity,也需要一些时间和资源的。 先见下面的运行效果: gif做的比价粗啊, 两个activity的界面就不介绍了,主要是在APP启动的时候开启一个服务,application代码如下:public class MyApplication extends原创 2017-03-20 20:05:59 · 19246 阅读 · 5 评论 -
Java注解探究,自定义注解封装简易网络请求框架
注解的定义:提供一种为程序设置元数据的方法。基本原则:注解不能干扰程序代码的运行,无论增加或删除注解,代码都能够正常运行。按照使用分类,可以分为系统注解和自定义注解。A:系统注解分为标准注解和元注解 1.标准注解 我们都见过好多,比如下面的: @Override 复写父类方法或者实现接口方法的提示* @Deprecated 方法过时的提示 @SuppressW原创 2017-04-08 13:00:47 · 3762 阅读 · 3 评论 -
仿ios加载等待dialog
有点空 就写了个仿ios的加载等待dialog,没有图片只能将就一下啊,运行效果原创 2017-03-29 19:44:56 · 920 阅读 · 0 评论 -
webview加载html图片过大左右滑动的解决/webview加载图片自适应大小
webview加载解析html5的时候加载图片 ,图片过大导致图片可以左右滑动,用户体验很不好,见下图 解决代码如下: 1.1webview的设置代码 WebSettings webSetting = webContent.getSettings(); webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SI原创 2017-02-24 21:07:43 · 7720 阅读 · 3 评论 -
使用TtransitionDrawable来实现图片颜色渐变过渡或者实现button的背景颜色渐变,很漂亮的效果
使用transitionDrawable实现图片颜色渐变,效果非常漂亮,先见效果图: 代码如下: 1.先看xml代码<?xml version="1.0" encoding="utf-8"?><transition xmlns:android="http://schemas.android.com/apk/res/android"> <!--注意:transition只能有两个子ite原创 2017-02-22 19:51:13 · 739 阅读 · 0 评论 -
shareSDK默认弹出九宫格的文字/图片不见了
今天做项目发现了文章标题的问题,问题如上图,思考后发现是因为在gradle文件中添加了一行代码 buildTypes { release { shrinkResources false //清除无用的资源和变量引用} 就是这一行代码,把shareSDK的xml属性文件都清除了我找到res values目录下 ssdk的xml原创 2017-02-22 17:37:36 · 898 阅读 · 0 评论 -
用贝塞尔画弧形(弧形的绘制)
//前段时间有个需求如下 //背景的那个蓝色的弧形,要怎么写,当时脑子闪现的就是贝塞尔曲线的弧形,刚好和其匹配,于是就尝试了一下//写出来的效果图如下: //是不是看起来很像//1.0第一步是绘一个弧形view代码如下:class MyView extends View { private Paint mPaint; private Path mPath;原创 2016-12-30 18:34:01 · 3981 阅读 · 0 评论 -
自定义仿IOS底部弹出Dialog
//1.先看一张效果图 //主界面就是一个button,点击弹出dialog 2.1 我们先看看dialog的布局代码如下:<?xml version="1.0" encoding="utf-8"?><android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res原创 2016-12-30 18:01:31 · 2099 阅读 · 0 评论 -
RecyclerView的item拖动排序效果实现和它的ItemTouchHelper详解
recyclerview这个控件太强大了,自带各种特效,很多高逼格效果需要我们自己简单组合一下就呈现出来,比如拖动排序!它对拓展简直是非常open(OCP原则),废话不扯了,先看效果: 说明: 1.实现这个效果的核心类是:ItemTouchHelper和ItemTouchHelper.Callbck. 2.mainActivity的布局就是一个recyclerview,item的布局cardv原创 2017-04-09 16:03:21 · 14189 阅读 · 5 评论 -
新建module报错:cannot access android.support.v4.app.BaseFragmentActivityJB的解决
在AS 2.1.3新建一个module的时候,出现cannot access android.support.v4.app.BaseFragmentActivityJB的报错,如下图: 回头查看自己的gradle文件里面明明依赖了appcompat compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.and原创 2017-04-05 14:35:35 · 15104 阅读 · 0 评论 -
handler的性能优化之弱引用持有activity
Android 中handler机制太重要了,无时不刻的都在处理消息队列和任务队列,很多人不注意,在处理延时任务的时候持有activity,导致activity不能被早早的回收,从而降低了APP的效率和性能。 比如下面经典的写法(很多人都会这样写): new Handler().postDelayed(new Runnable() { @Override原创 2017-04-05 18:15:48 · 2043 阅读 · 2 评论 -
Meterial Design核心 套路behavior的自定义玩法(二)
coodinatorlayout主要监听子控件子容器的滑动,比如:recyclerview、nestScrollview,ViewPager。这次尝试的是recyclerview的监听,但是有点坑爹的是behavior返回recyclerview滑动距离有点问题,这个应该是behavior的bug吧,之前尝试的scrollview是完美切合。behavior 绑定中间和右边的recycleview,原创 2017-06-04 14:07:22 · 352 阅读 · 0 评论 -
Meterial Design 的核心套路layout_behavior的自定义玩法(一)
Android 现在随着MeterialDesign的发展,越来越喜欢用套路了,比如appbar,toolar,collapseingToolbarlayout,coodinatorlayout的组合使用实现酷炫的效果。自古深情留不住,从来套路得人心。先看自定义behavior的简单效果,不断点击左边textview,向下移动texitview,通过behavior反馈给右边的textview和下面原创 2017-06-03 16:45:18 · 982 阅读 · 0 评论 -
ColorMatrix(颜色滤镜)介绍和使用
颜色矩阵,对每一个像素点的颜色(ARGB)进行更改,像ps一样的改变图像的颜色。因为运算大量的像素点,colorMatrix是native方法。 这里主要是讲怎么使用。 一。先看下面色彩矩阵表示方式 看看运行效果,将上面的色块进行矩阵变换,去掉了红色元素,透明度变为之前的0.8f,矩阵代码如下: matrix.set(new float[]{ 1,0,0,原创 2017-06-27 20:29:20 · 8213 阅读 · 0 评论 -
Paint的一些值得注意的细节
paint的一些值得注意点细节,上图中介绍了不常用的属性:线帽、交点样式、Paint的样式。 //画一条直线,看看线帽样式 /** * paint的线帽外形 * Paint.Cap.BUTT 没有线帽 * Paint.Cap.ROUND 圆形线帽 * Paint.Cap.SQUARE 方形线帽原创 2017-06-17 18:01:43 · 586 阅读 · 0 评论