android
android
史蒂文周
这个作者很懒,什么都没留下…
展开
-
kotlin运行
由于我本身是做android的,android studio本身有内置kotlin的插件。但若只是想跑kotlin的程序,并不像和android程序绑在一起,可以创建一个kt文件,在里面写一个main函数,就可以直接运行kotlin程序。还有一种方式是使用使用IntelliJ IDEA,不过我没啥兴趣用这个软件,就不介绍了。1.使用android studio。2、在线运行Kotlin代码。原创 2024-01-12 09:36:25 · 661 阅读 · 0 评论 -
android属性动画
属性动画的本质原理就是通过不断对值进行改变,并不断将该值赋给对象的属性,从而实现该对象在该属性上的动画效果。流程原理图如下(网络上找的):从上图可以知道属性动画分类大致又可以分为ValueAnimator,ObjectAnimator。ValueAnimator//设置参数:开始值0和结束值360,表示你要从哪个值到哪个值进行变化(旋转角度)val valueAnimator = ValueAnimator.ofFloat(0f, 360f)//这里是设置动画执行时间,毫秒valueAnim原创 2020-07-13 11:13:11 · 209 阅读 · 0 评论 -
android传统动画:帧动画和补间动画
现在android一般分为属性动画和传统动画。而传统动画有分为帧动画和补间动画。今天就来了解下这两个,就当做个笔记。帧动画帧动画有点其实就是类似gif的动画,用一张一张的图片叠加产生的动画,不过缺点也是很明显的,如果每张图片都很大,就很影响性能。所以现在其实比较少用了。帧动画的使用也很简单,这里准备三张图片。然后加入xml资源文件。animation_frame_play.xml<?xml version="1.0" encoding="utf-8"?><animation原创 2020-07-03 16:44:17 · 326 阅读 · 0 评论 -
recyclerview实现加载更多
这里并没有重写recyclerview,只是对adapter进行了封装。封装的adapter/** * * @fuction recycleview 加载更多用的adpter * @date 2018/9/15 * @author zhou */abstract class RVLoadMoreAdapter<T>( protected var mContext: Context, private val recyclerView: RecyclerView,原创 2020-07-03 09:23:56 · 635 阅读 · 0 评论 -
recyclerview的adapter封装(kotlin)
首先是重写 ViewHolder,参考了鸿洋大神的博客。class RViewHolder(private val mContext: Context, val convertView: View) : ViewHolder(convertView) { private val mViews: SparseArray<View> init { mViews = SparseArray() } /** * 通过viewId获取控件原创 2020-07-01 16:02:11 · 708 阅读 · 0 评论 -
android防止连续点击的简单实现(kotlin)
首先 方法类:package com.zhou.base.utils/** * Created by zhou on 17/3/20. */object ToolsUtil { //防止连续点击 /** 判断是否是快速点击 */ private var lastClickTime: Long = 0 val isFastDoubleClick: Boolean get() { val time = System.curre原创 2020-06-30 14:01:47 · 1393 阅读 · 0 评论 -
android实现跳转第三方地图导航
最近有个需求,就是在自己的app项目里面直接根据定位,跳转进入百度或者高德地图进行导航。val uri=Uri.parse("geo:24.473306,118.123456"); //打开地图定位val it = Intent(Intent.ACTION_VIEW, uri)val cn = it.resolveActivity(packageManager)if(cn == null){ Toast.makeText(this@MainActivity,"请先安装第三方导航软件",To原创 2020-06-23 10:26:45 · 1538 阅读 · 0 评论 -
android 剪切板遇到的坑
最近想实现一个类似支付宝复制口令,然后打开运用就可以弹出弹框的功能。在其他手机上面操作都没有问题,但是在华为上面就开始有问题了,估计是版本比较高。后来研究了一下,竟然是剪切板找不到内容。就是if (!cm.hasPrimaryClip()) { return;}上面的cm.hasPrimaryClip()一直返回false。我就非常纳闷,明明已经复制了,而且是有内容的啊。后来终于找到了问题,好像是安卓新规定,运用进入前台之后,剪切板得延迟一下才能拿到内容,不然就是空的。这就有点尴尬了。那就原创 2020-06-11 15:35:21 · 3159 阅读 · 0 评论 -
Activity进入和退出动画的实现
关于acitvity进入和退出动画可以在代码动态设置animation,也可以在主题设置style。这里以activity从底部弹出和向下退出的动画效果为例。activity.overridePendingTransition()该方法有两个参数,一个是我们新启动的activity进入时的动画,另一个是当前activity退出时的动画实现方式:启动activity的设置 startActivity(intent); overridePendingTransition(R.anim.原创 2020-06-04 14:49:17 · 960 阅读 · 0 评论 -
android关于Scrollview(或NestedScrollView)嵌套webview出现的问题解决
最近在做一些页面详情页的时候,因为需要用到NestedScrollView嵌套webview进行部分网页的显示。因为之前用的是4.4的android版本测试的,所有没有发现问题。后来在android9.0的版本测试的时候,才发现会出现:webview的页面显示为空白或者高度为0这两种情况。 网上查了好多解决方案,基本都不能用,虽然有一个在onPageFinished里面重新设置webview的高度,但是这种限死高度的事情肯定是会有问题的,所有基本也可以放弃这个方案。最后通过测试webview的加载过程,原创 2020-05-25 16:42:19 · 2084 阅读 · 3 评论 -
android中onFinishInflate和onSizeChange()的调用时机
1.onFinishInflateonFinishInflate是view加载完xml之后执行的方法,相当于只是完成了布局的映射,在这个方法里面是得不到控件的高宽的,控件的高宽是必须在调用了onMeasure方法之后才能得到,而onFinishInflate方法是在setContentView之后、onMeasure之前。2.onSizeChange()控件大小改变后调用,一般调用顺序是:onMeasure() -> onSizeChange() -> onLayout() -> o原创 2020-05-21 10:54:36 · 1020 阅读 · 0 评论 -
如何在自己的android项目中使用矢量图
众所周知,在android5.0以后,谷歌推出了android矢量图的相关使用包。 那么使用矢量图有什么好处呢?减少应用包apk的大小,减少了美工的工作量。因为不用在生成各种尺寸的图片进行适配。只要一套xml文件既可以解决所有的尺寸适配。一定程度上也减少了应用的内存。 当然,也有缺点,因为xml其实是绘制的文件,也就是使用的时候才去调用cpu进行绘制,所以一定程度上还是会耗点性能,当然不是很大影响。除非你的矢量图非常复杂。或者非常巨大。不过我们正常使用的矢量图标都是很小的,所以并没有特别大的影响。原创 2020-05-20 10:40:20 · 616 阅读 · 1 评论 -
android冷启动解决方案
关于android splash的页面,相信很多android开发都是很熟悉的,就是点击应用图标后第一个出现的那个界面。但是你可能会发现这样一种情况,第一次启动应用的时候,会出现一瞬间的黑屏或者白屏,之后才进入你写的splash界面。这个主要就是android的冷启动造成的,所有的应用都不可避免的会出现这样的情况。 那么有什么可以解决的方案呢?当然是有的。首先先了解一下冷启动,其实就是第一次启动运用或者说一段时间未使用导致应用被系统kill,这个过程,由于从启动应用到重新布局绘制渲染都要花费一定的时间,原创 2020-05-20 10:07:21 · 521 阅读 · 0 评论 -
SparseArray和SparseArrayCompat的使用
视图动画概述视图动画分为Tween Animation(补间动画)和帧动画(Frame Animation)Tween Animation(补间动画)视图动画可以在一个视图容器内执行一系列简单变换(位置、大小、旋转、透明度)。 譬如,如果你有一个TextView对象,您可以移动、旋转、缩放、透明度设置其文本,当然,如果它有一个背景图像,背景图像会随着文本变化。 补间动画通过XML或Android代码定义,建议使用XML文件定义,因为它更具可读性、可重用性。 根据动画效果,补间动画分为以下5类:1.原创 2020-05-19 10:24:07 · 1140 阅读 · 1 评论 -
android中invalidate和requestLayout区别
View有两个很重要的方法:invalidate和requestLayout,常用于View重绘和更新。1. requestLayoutTo initiate a layout, call requestLayout(). This method is typically called by a view on itself when it believes that it can no longer fit within its current bounds. ——摘自View源码从上面这句话看出,原创 2020-05-19 09:47:30 · 1251 阅读 · 0 评论 -
RecyclerView详解(六):实现列表上下循环滑动的需求
主要是实现类似这个效果这个效果其实也很简单,只是之前看到一些网上的实现方法感觉特别复杂,就决定自己写一个,也当做个记录。首先是初始化组件private fun initUI() { setContentView(R.layout.activity_rv_animation) tv_title.text = "上下滑动的动画效果" val linearLayoutManager = LinearLayoutManager(this) rv原创 2020-05-18 14:38:38 · 682 阅读 · 0 评论 -
RecyclerView详解(五):设置EmptyView
大家都知道listView提供了一个setEmptyView(View view)用来处理当获取不到数据的时候的界面处理——-用于做些数据为空的提示。但是我们也很遗憾的发现RecyclerView并没有提供像listView那样的setEmptyView()方法。不过办法自然是有的。 一般有两种方式:1.在布局文件中控制RecyclerView控件和空布局的显示和隐藏2.重写RecyclerView.Adapter(推荐)第一种思路自然low了一点,虽然listview也是采用这种思路,不信你原创 2020-05-14 10:29:27 · 1191 阅读 · 0 评论 -
RecyclerView详解(四):LayoutManager布局管理器
LayoutManager是一个抽象类,有3个子类:LinearLayoutManager: 线性布局管理器 GridLayoutManager: 表格布局管理器 StaggeredGridLayoutManager: 瀑布流布局管理器LinearLayoutManagerLinearLayoutManager 是线性布局管理器,使用频率是最高的,展示的样式跟listview一模一样。 该类有3个构造方法:LinearLayoutManager(Context context) LinearL原创 2020-05-14 09:39:05 · 1438 阅读 · 1 评论 -
RecyclerView详解(三):点击事件
我们知道ListView 有提供像setOnItemClickListener()和setOnItemLongClickListener()这样的点击事件,可以直接使用,但是RecyclerView没有提供,所以很明显,我们得自己写接口回调。确切的说,是在adapter里面写接口回调。 其实思路就是直接用在itemview里面设置setOnClickListener()即可。首先是定义回调接口public interface OnItemClickListener { void onIte原创 2020-05-14 09:18:02 · 785 阅读 · 0 评论 -
RecyclerView详解(二):ItemDecoration使用(kotlin)
我们知道listview可以通过在布局文件中设置android:divider=”#ffff0000” android:dividerHeight=”10dp”来控制item之间的间隔和颜色,但是recyclerview是不行的。 recyclerview提供了一个ItemDecoration类供开发者扩展使用,再通过RecyclerView.addItemDecoration(ItemDecoration)的方法,即可以完成对item间间隔的定义。其实ItemDecoration相当于可以自定义原创 2020-05-13 18:22:22 · 1375 阅读 · 1 评论 -
RecyclerView详解(一):简单使用介绍(kotlin)
RecyclerView是android5.0开始推出的一个列表类数据展示的组件,放在support-v7,所以5.0以下也同样可以使用。与经典的ListView相比,Recyclerview同样拥有item回收复用的功能,这一点从它的名字Recyclerview即回收view也可以看出。 其实RecyclerView并不是来替代listview的,两者使用场景不一样。如果是一些简单的列表展示,其实依旧用listview就可以了,而且很多方法都已经封装好。事实上,RecyclerView相对于listvi原创 2020-05-13 17:33:17 · 845 阅读 · 0 评论 -
android sdk大小优化
优化res,assets文件大小1.可以通过lint检查,在Android Studio中打开“Analyze” 然后选择"run Inspection by name",早起弹出框中输入比如选择unused resources,就可以根据过滤出的没有用的资源,进行删除。2.使用tinypng对图片资源进行压缩,tinypng官网使用起来很方便,压缩效果也是可以的。3.大部分图片使用W...原创 2019-09-03 15:35:18 · 1318 阅读 · 0 评论 -
[Android自定义控件] Android自定义控件
开发自定义控件的步骤:1、了解View的工作原理 2、 编写继承自View的子类3、 为自定义View类增加属性 4、 绘制控件 5、 响应用户消息 6 、自定义回调函数 一、View结构原理Android系统的视图结构的设计也采用了组合模式,即View作为所有图形的基类,Viewgroup对View继承扩展为视图容器类。转载 2015-11-18 09:00:30 · 179 阅读 · 0 评论