自定义view

自定义水波纹view

丶灬走出姿态 提交于 2019-12-15 06:35:00
今天自定义个水波纹扩散 或者收缩 效果的view;先上效果 /** * 自定义view实现 水波纹 效果 */ public class MoireView extends View { private Paint paint; //最大半径 private int radius; //绘制半径 private int drawRadius; //屏幕宽高 private int w, h; //背景颜色 private int backColor = Color.TRANSPARENT; //水波纹颜色 private int moireColor = Color.WHITE; //动画执行时间 private int duration = 2000; //是否是扩散水波纹 private boolean isDiffusion = true; public MoireView(Context context) { super(context); init(); } public MoireView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { paint = new Paint(); paint.setAntiAlias(true);

Android 学习笔记核心篇

隐身守侯 提交于 2019-12-14 05:03:33
原文:https://juejin.im/post/5c46db4ae51d4503834d8227 Android 学习笔记核心篇 基础知识 底层原理 Android 操作系统是一个多用户 Linux 操作系统,每个应用都是一个用户 操作系统一般会给每个应用分配一个唯一的 Linux 用户 ID,这个 ID 对应用是不可见的。但有些情况下两个应用可以共享同一个 Linux 用户 ID,此时他们可以访问彼此的文件,甚至还可以运行在同一个 Linux 进程中,共享同一个虚拟机。但两个应用的签名必须是一样的 每个进程都有自己的虚拟机,一般每个应用都运行在自己的 Linux 进程中 应用组件 应用没有唯一的入口,没有 main() 函数,因为应用是由多个组件拼凑在一起的,每个组件都是系统或者用户进入应用的入口,组件之间既可以是相互独立的,也可以是相互依赖的。系统和其它应用在被允许的情况下可以启动/激活一个应用的任意一个组件 组件有四种类型: Activity,Service,BroadcastReceiver 和 ContentProvider Activity Activity 表示一个新的用户界面,只能由系统进行创建和销毁,应用只能监听到一些生命周期回调,这些回调通常也被叫作生命周期方法 Activity 的名字一旦确定好就不要再更改了,否则可能会引发一系列问题 Service

Andorid开发自定义View(一)

走远了吗. 提交于 2019-12-14 04:52:56
1 View与ViewGroup LinearLayout等布局控件继承ViewGroup,TextView继承View,而ViewGroup也继承自View 2 坐标系 Android系统中有两个坐标系,分别为 View 坐标系和 Activity 坐标系 2.1 Andorid坐标系 android将屏幕左上角的顶点作为Andorid坐标系的原点,原点向右是X轴正方向,原点向下是Y轴正方向。 使用getRawX()和getRawY() 方法获得的是Andorid坐标系的坐标。 2.2 View坐标系 2.1.1 View获取自身的宽高 width=getRight()-getLeft()//该控件最右面的位置距离减去最左面的距离 height=getBottom-getTop()//最下面的控件位置减最上面的距离 系统提供了获取View控件宽和高的方法 int型 private void getHeight() { TextView textView = new TextView(context); textView.getHeight();//获取控件高度 textView.getWidth();//获取控件宽度 } 2.2.2 View自身的坐标 通过以下方法获取View到父控件的距离 int型 textView.getTop();//获取View自身 顶边到其父布局顶边

自定义View实现七天签到

纵饮孤独 提交于 2019-12-11 19:52:41
Android 自定义View实现七天签到 使用: /** * Created by user on 19/12/10. */ public class SignInViews extends View { private static final int DEF_HEIGHT = 85; private static final int DEF_PADDING = 10; private static final int TEXT_MARGIN_TOP = 13; private static final float SECTION_SCALE = 1.2F / 2; private static final float SIGN_IN_BALL_SCALE = 1F / 6; private static final float SIGN_BG_RECT_SCALE = 1F / 4; private static final long DEF_ANIM_TIME = 1000; private int signInBgColor; private int signInPbColor; private int signInCheckColor; private int singInTextColor; private int singInTextSize; private

微信小程序Picker自定义日期时间

会有一股神秘感。 提交于 2019-12-11 18:10:37
老规矩:先上效果图,再看源码! 功能:可以自定日期时间的Picker,根据不同的需求做不一样的Picker! 第一步:新建一个js文件:名为dateTimePicker.js,作用是自定义日期时间js工具 function withData(param) { return param < 10 ? '0' + param : '' + param; } function getLoopArray(start, end) { var start = start || 0; var end = end || 1; var array = []; for (var i = start; i <= end; i++) { array.push(withData(i)); } return array; } function getMonthDay(year, month) { var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0), array = null; switch (month) { case '01': case '03': case '05': case '07': case '08': case '10': case '12': array = getLoopArray(1, 31) break;

通过构造者模式做一个通用的自定义dialog弹窗

点点圈 提交于 2019-12-11 17:53:39
app开发肯定少不了各种样式的弹窗,这里分享一个自己一直在用的自定义dialog弹窗,简化了创建dialog里重复操作。 先上代码 public class CustomDialog extends Dialog { private MyDialogListener listener;//外部设置的监听回调 private int dialogId = -1;//通过dialogId 区分同一页面多个弹窗 private DialogOnClickListener onClickListener = new DialogOnClickListener();//implements实现View.OnClickListener private ViewGroup contentView;//dialog的布局对象 public CustomDialog(Context context) { super(context); } public CustomDialog(@NonNull Context context, @StyleRes int themeResId) { super(context, themeResId); } public void setTextViewText(int id, String text) { TextView tv = contentView

记一次使用RN实现侧滑删除

有些话、适合烂在心里 提交于 2019-12-11 09:47:18
最近公司全面推行使用React-Native进行跨平台开发,虽然我对这方面不熟悉,而且对RN也没有啥兴趣,但是也没办法,也没有学啥js和RN的东西,直接刚。正好要实现一个侧滑删除功能,网上搜了一波,没发现啥好的说明,于是决定自己实现一波。但由于自己没有系统的学过RN,所以写的不怎么给力。 首先看下效果图,如下所示: 要写这个组件,有两个问题要先解决, 这个页面已经存在了,我如何能在做较小修改的情况下,实现这样一个侧滑删除的组件? 如果不修改原来的组件添加滑动手势? 经过考虑之后,决定自定义一个容器组件,只要包裹上一层并提供对应的信息,即可拥有侧滑删除的功能,也许这并不是最好的实现方式,但起码功能已经有了。在我项目里的使用方式如下所示: return ( < MessageSwiper actions = { [ < MessageSwiperAction title = { '删除' } color = { 'red' } action = { this . actionDemo . bind ( this ) } confirm = { this . confirmDemo . bind ( this ) } animatable = { true } / > , < MessageSwiperAction title = { '移动' } color = { 'green' }

Android 自定义View

匆匆过客 提交于 2019-12-10 20:06:14
文章目录 onMeasure() 示意图 onMeasure 作用 认识 onMeasure 认识 MeasureSpec onMeasure() 以下内容转载自 https://www.cnblogs.com/yishujun/p/5560838.html。 推荐阅读:https://blog.csdn.net/a396901990/article/details/36475213?utm_source=tuicool&utm_medium=referral 示意图 onMeasure 作用 (1)一般情况重写onMeasure()方法作用是为了自定义View尺寸的规则,如果你的自定义View的尺寸是根据父控件行为一致,就不需要重写onMeasure()方法 (2)如果不重写onMeasure方法,那么自定义view的尺寸默认就和父控件一样大小,当然也可以在布局文件里面写死宽高,而重写该方法可以根据自己的需求设置自定义view大小 认识 onMeasure (0)onMeasure (int widthMeasureSpec, int heightMeasureSpec)是view自己的方法 (1)onMeasure 方法简单的理解就是是用于测量视图的大小,主要是用来测量自己和内容的来确定宽度和高度 (2)onMeasure有两个参数 ( int widthMeasureSpec

Android控件ListView优化

流过昼夜 提交于 2019-12-10 17:34:21
这篇文章只是总结下getView里面优化视图的几种写法,就像孔乙己写茴香豆的茴字的几种写法一样,高手勿喷,勿笑,只是拿出来分享,有错误的地方欢迎大家指正,谢谢。 listview Aviewthatshowsitemsinaverticallyscrollinglist。 一个显示一个垂直的滚动子项的列表视图在android开发中,使用listview的地方很多,用它来展现数据,成一个垂直的视图。使用listview是一个标准的适配器模式,用数据--,界面--xml以及适配器--adapter,数据被适配器按照需要的方式展现出来,xml描写了数据如何展现,activity中控制这些活动。 其中使用自定义的adapter,会要重写getView方法,在getView方法产生给用户item的视图以及数据。 见图: 这里有一个优化的地方,就是重用view,这样减少内存消耗,同时加快item加载速度。 在getView中优化的地方,大家想必都非常情况,下面我总结了三种优化的写法,请大家指正。 第一: 重用了convertView,很大程度上的减少了内存的消耗。通过判断convertView是否为null,是的话就需要产生一个视图出来,然后给这个视图数据,最后将这个视图返回给底层,呈献给用户。 特点:如果当前的convertView为null,则通过LayoutInflat产生一个view。

[积累]Android运行时异常“Binary XML file line # : Error in

我只是一个虾纸丫 提交于 2019-12-10 07:57:54
在原生Android下编译APK,编译没有问题,但是在运行的时候经常出现如标题所描述的异常,然后整个程序Crash掉...... 我遇到该问题常常都是因为修改了资源文件所引起,大致有以下几种方式来解决: 1. 引用类名问题 :自定义了一个View,将他用于布局文件中,假设他的包名叫MyPackage,类名叫MyTestView,这个时候你在XML作为布局元素来布局的话,必须使用完整路径名,也就是包名加类名来引用,用MyPackage.MyTestView来进行引用。 2. 构造函数问题 :自定义一个View,必须派生实现基类View的三个构造函数 View(Context context) //Simple constructor to use when creating a view from code View(Context context, AttributeSet attrs) //Constructor that is called when inflating a view from XML View(Context context, AttributeSet attrs, int defStyle) //Perform inflation from XML and apply a class-specific base style 从文档上的介绍来看