-
2021-05-26 18:14:58
Android自定义view 你所需要知道的基本函数
首先 往Canvas上面draw需要一个Paint。 画笔常用的函数有哪些呢。由于木有调试环境,函数基本上默写,有错请评论提出,蟹蟹!
Paint p = new Paint();
//设置画笔的颜色
p.setColor(Color.parseColor("#2EA4F2"));
//设置画笔的风格:全部填充FILL 只画轮廓STROKE
p.setStyle(Paint.Style.STROKE);
//设置画笔的宽度
p.setStrokeWidth(8);
//设置是否抗锯齿
p.setAntiAlias(true);
//设置文字大小
p.setTextSize(30);
//测量字符串的长度
p.MeasureText("Hello World");
当我们有了画笔后,就可以绘制基本图形。
线:
//绘制一条从0,0到100,100的线
canvas.drawLine(0,0,100,100,p);
三角形&多边形
是用Path类实现的。Path类提供了点绘制线的功能,看例子
[java] view plain copy 在CODE上查看代码片派生到我的代码片
path.MoveTo(0,0);//给定path的起点
path.LineTo(10,10);//往10,10绘制一条路径
path.LineTo(5,3);//继续从10,10往5,3绘制一条路径
path.close;//将绘制的线形成封闭空间
canvas.drawPath(path,p);
矩形:
//画一个矩形,左上角的坐标为0,0 右下角的坐标为100,50
canvas.drawRect(0,0,100,50,p);
圆角矩形:
//一个矩形
RectF rectF = new RectF(0,0,100,50);
//画一个圆角矩形,大小为rectF,20,20分表表示左边圆角的半径和右边圆角的半径
canvas.drawRoundRect(RectF,20,20,p);
圆形
//画一个圆,圆心为50,50 半径为100
canvas.drawCircle(50,50,100,p);
弧形 注意这里第二个参数,是从三点钟方向为0°计算,所以想从12点中方向开始绘制,那么就是270°。第四个参数是决定是否经过圆心(自己改变一下这个参数就知道区别了)。
//画一个弧,弧所在矩形为rectF 从270°开始,画90° 不经过圆心
canvas.drawArc(rectF,270,90,false,p);
以上基本上是自定义view所用到的最基本的函数,欢迎补充。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
更多相关内容 -
android自定义控件和自定义回调函数步骤示例
2020-09-04 18:09:39主要介绍了android自定义控件步骤示例,包括为View类增加属性、响应用户消息、自定义回调函数等方法 -
Android 自定义View的构造函数详细介绍
2021-01-04 02:49:19Android自定义View的构造函数 自定义View是Android中一个常见的需求,每个自定义的View都需要实现三个基本的构造函数,而这三个构造函数又有两种常见的写法。 第一种 每个构造函数分别调用基类的构造函数,再调用一... -
Android自定义View的三个构造函数
2021-01-04 09:16:32自定义View有三个构造方法,它们的作用是不同的。 public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); } public MyView... -
Android C 自定义一个print函数
2021-05-27 09:46:46首先我们看下Android NDK中关于log的定义针对宏定义__android_log_printint __android_log_print(int prio,const char *tag,const char *fmt,...)Writes a formatted string to the log, with priority prio and tag...首先我们看下Android NDK中关于log的定义
针对宏定义
__android_log_print
int __android_log_print(
int prio,
const char *tag,
const char *fmt,
...
)
Writes a formatted string to the log, with priority prio and tag tag.
针对va_list
__android_log_vprint
int __android_log_vprint(
int prio,
const char *tag,
const char *fmt,
va_list ap
)
Equivalent to __android_log_print, but taking a va_list.
(If __android_log_print is like printf, this is like vprintf.)
实际的使用方案
针对宏定义
log.h
/* arm linux androideabi gcc */
#if defined(ANDROID) || defined(__ANDROID__)
#include
#define TAG "swack_lib"
#define LOGD(...) \
{ \
__android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__); \
}
#define LOGE(...) \
{ \
__android_log_print( \
ANDROID_LOG_ERROR, TAG, "LOGE (%s:%i) ", __func__, __LINE__); \
__android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__); \
/*exit(1);*/ \
}
#endif
针对va_list
log.h
#ifndef LOG_H_
#define LOG_H_
#include
#define LOGD(...) \
{ \
test_logd(__VA_ARGS__); \
}
#define LOGE(...) \
{ \
test_loge(__func__, __LINE__, __VA_ARGS__); \
}
void test_logd(const char* format, ...);
void test_loge(const char* func,
const uint32_t line,
const char* format,
...);
#endif // LOG_H_
log.c
#include "mixo_pal.h"
#include
#define TAG "swack_lib"
void test_logd(const char* format, ...)
{
va_list arg;
va_start(arg, format);
__android_log_vprint(ANDROID_LOG_DEBUG, TAG, format, arg);
va_end(arg);
}
void test_loge(const char* func,
const uint32_t line,
const char* format,
...)
{
va_list arg;
va_start(arg, format);
__android_log_print(ANDROID_LOG_ERROR, TAG, "LOGE (%s:%i) ", func, line);
__android_log_vprint(ANDROID_LOG_ERROR, TAG, format, arg);
va_end(arg);
}
-
android自定义view三个,Android自定义View的三个构造函数
2021-06-03 03:43:35Android自定义View的三个构造函数自定义View有三个构造方法,它们的作用是不同的。public MyView(Context context) {super(context);}public MyView(Context context, AttributeSet attrs) {super(context, attrs);}...Android自定义View的三个构造函数
自定义View有三个构造方法,它们的作用是不同的。
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
第一个是new 一个对象的时候调用。
第二个是在XML文件声明的时候调用。
系统默认只会调用前两个构造函数,至于第三个构造函数的调用,通常是我们自己在构造函数中主动调用的。
以上所述是小编给大家介绍的Android自定义View的三个构造函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
时间: 2017-06-18
初始Custom View的构造函数 之前写过一篇实现圆形进度条的博客(自定义圆形进度条),通常我们在实现Custom View的时候,都会先继承View并实现View的三个构造函数,例如: import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.view.View; public class MyCustomView exte
Android自定义View的构造函数 自定义View是Android中一个常见的需求,每个自定义的View都需要实现三个基本的构造函数,而这三个构造函数又有两种常见的写法. 第一种 每个构造函数分别调用基类的构造函数,再调用一个公共的初始化方法做额外初始化. public class MyView extends ListView { public MyView(Context context) { super(context); sharedConstructor(); } public
创建Window Window即窗口,这个概念在AndroidFramework中的实现为android.view.Window这个抽象类,这个抽象类是对Android系统中的窗口的抽象.在介绍这个类之前,我们先来看看究竟什么是窗口呢? 实际上,窗口是一个宏观的思想,它是屏幕上用于绘制各种UI元素及响应用户输入事件的一个矩形区域.通常具备以下两个特点: 独立绘制,不与其它界面相互影响: 不会触发其它界面的输入事件: 在Android系统中,窗口是独占一个Surface实例的显示区域,每个窗口的S
Android 自定义View时使用TypedArray配置样式属性详细介绍 在自定义view时为了提高复用性和扩展性,可以为自定义的view添加样式属性的配置,比如自定义图片资源.文字大小.控件属性等,就这需要用到TypedArray类,下面以一个自定义的可点击扩展和收缩的TextView为例记录下这个类的简单使用. 先上效果图: 点击以后为 再贴代码: 1.自定义view类: /** * @title ExpandTextView * @description 可扩展TextView,可以
本文所需要实现的就是这样一种有逼格的效果: 右上角加了个图片框,按下确定可以裁剪正方形区域里的图片并显示在右上角. 实现思路: 1:首先需要自定义一个ZoomImageView来显示我们需要的图片,这个View需要让图片能够以合适的位置展现在当前布局的图片展示区域内(合适的位置值的是:如果图片长度大于屏幕,则压缩图片长度至屏幕宽度,高度等比压缩并居中显示,如果图片高度大于屏幕,则压缩图片高度至屏幕高度,长度等比压缩并居中显示.): 2:然后需要实现这个拖动的框框,该框框实现的功能有四点:拖动.扩
一 概述: 最近一直致力于Android自定义VIew的学习,主要在看,还有CSDN博客鸿洋大神和wing大神的一些文章,写的很详细,自己心血来潮,学着写了个实现了类似卫星效果的一个自定义的View,分享到博客上,望各位指点一二.写的比较粗糙,见谅.(因为是在Linux系统下写的,效果图我直接用手机拍的,难看,大家讲究下就看个效果,勿喷). 先来看个效果图,有点不忍直视: 自定义VIew准备: (1)创建继承自View的类; (2)重写构造函数; (3)定义属性. (
Android自定义View中attrs.xml的实例详解 我们在自定义View的时候通常需要先完成attrs.xml文件 在values中定义一个attrs.xml 然后添加相关属性 这一篇先详细介绍一下attrs.xml的属性. <?xml version="1.0" encoding="utf-8"?> //自定义属性名,定义公共属性
先给大家展示下效果图,如果感觉不错,请参考实现思路: 我们要实现一个自定义的再一个圆形中绘制一个弧形的自定义View,思路是这样的: 先要创建一个类ProgressView,继承自View类,然后重写其中的两个构造方法,一个是一个参数的,一个是两个参数的,因为我们要在xml文件中使用该自定义控件,所以必须要定义这个两个参数的构造函数.创建完了这个类后,我们先不去管它,先考虑我们实现的这个自定义View,我们想让它的哪些部分可以由使用者自己指定,比如说这个Demo中我们让他的外面圆的外边框颜色和宽
前言:Android自定义View对于刚入门乃至工作几年的程序员来说都是非常恐惧的,但也是Android进阶学习的必经之路,平时项目中经常会有一些苛刻的需求,我们可以在GitHub上找到各种各样的效果,能用则用,不能用自己花功夫改改也能草草了事.不过随着工作经验和工作性质,越来越觉得自定义View是时候有必要自己花点功夫研究一下. 一.经过这两天的努力,自己也尝试着写了一个Demo,效果很简单,就是开关按钮的实现. 可能有的人会说这效果so easy,找UI切三张图就完事了,何必大费周折自定义.
近期项目中需要使用到一种类似手机电池充电进度的动画效果,以前没学属性动画的时候,是用图片+定时器的方式来完成的,最近一直在学习动画这一块,再加上复习一下自定义view的相关知识点,所以打算用属性动画和自定义view的方式来完成这个功能,将它开源出来,供有需要的人了解一下相关的内容. 本次实现的功能类似下面的效果: 接下来便详细解析一下如何完成这个功能,了解其中的原理,这样就能举一反三,实现其他类似的动画效果了. 详细代码请看大屏幕 https://github.com/crazyandcoder
-
Kotlin 自定义函数
2021-01-12 14:50:13Kotlin 可以为现有类添加一个自定义函数,而不必修改原来类的代码, 也可以理解为拓展函数。 1. 下面的例子为 List<String> 类添加一个转化函数,使得转化成 List<Result> 对象 (Result 为自定义的类) ...Kotlin 可以为现有类添加一个自定义函数,而不必修改原来类的代码, 也可以理解为拓展函数。
1. 下面的例子为 List<String> 类添加一个转化函数,使得转化成 List<Result> 对象 (Result 为自定义的类)
class ListFunctionTest { companion object { @JvmStatic fun main(args: Array<String>) { println("main start") val nameList = mutableListOf("Tom", "Peter", "LiLei", "Jame", "Sim", "Luck") nameList.convert().forEach { println(it) } } //为List<String> 类自定义一个函数, 它的对象可以直接调用 // 例如根据每个原始的String, 添加了id, 即转换成List<Result> 对象 返回 private fun List<String>.convert(): List<Result> { var results = mutableListOf<Result>() this.forEach { name -> results.add(Result(results.size, name)) } return results } data class Result( val id: Int, val name: String ) { override fun toString(): String { return "id: $id, name: $name" } } } }
输出结果:
id: 0, name: Tom
id: 1, name: Peter
id: 2, name: LiLei
id: 3, name: Jame
id: 4, name: Sim
id: 5, name: Luck这里对 List<String> 类 自定义一个 convert() 函数, 目的是根据原始的每一个String 数据, 添加一个id, 对应为一个新的类 Result.
并把这个新的集合类List<Result> 的对象返回。
这就意味着,我们可以对原始的数据, 通过链式调用获得新的数据。
下面的 this 即表示原始的数据对象。
private fun List<String>.convert(): List<Result> { var results = mutableListOf<Result>() this.forEach { name -> results.add(Result(results.size, name)) } return results }
-
JS 自定义函数方法
2021-01-24 15:56:07JS 自定义函数/方法 函数简述及作用 如果代码需要被重复的利用,那么为了统一编写使用,可以将其封装在一个函数/方法中; 作用:增强代码的复用性; 函数的格式 function 方法名(参数列表) { 方法体 } 注意... -
Android自定义View构造函数详解
2021-01-05 03:08:42之前写过一篇实现圆形进度条的博客(自定义圆形进度条),通常我们在实现Custom View的时候,都会先继承View并实现View的三个构造函数,例如: import android.content.Context; import android.graphics.Canvas; ... -
Java/Android中的函数调用&回调函数&自定义回调函数
2015-10-23 12:47:01在Android的学习过程中经常会听到或者见到“回调”这个词,那么什么是回调呢?所谓的回调函数就是:在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去... -
Android自定义NavigationController - 安卓自定义导航栏 --【WJ】
2021-05-26 11:11:10注意:本文主要介绍安卓自定义顶部导航栏(iOS中成为NavigationBar);写的不尽如人意的地方,请见谅~概述如下:环境 :Android Studio 1.4 for Mac语言 :如果我没猜错的话,应该是Java特点 :简单、直接、暴力,绝对... -
SQLite 加入自定义函数
2018-11-18 00:39:24SQLite 加入自定义函数 -
Android 使用Kotlin自定义View的方法教程
2021-01-05 20:38:41随着google宣布kotlin作为官方开发语言,在Android中使用kotlin的趋势也越来越明显,最近被kotlin的文章轰炸了,所以决定上手试一下,试过之后,感觉靠它灵简直有魔性。特别是一句话写出一个复杂的循环的时候,简直... -
Android自定义弹出窗口PopupWindow使用技巧
2021-01-05 06:54:17PopupWindow是Android上自定义弹出窗口,使用起来很方便。 PopupWindow的构造函数为 代码如下:public PopupWindow(View contentView, int width, int height, boolean focusable) contentView为要显示的view,... -
thinkphp模板中使用自定义函数
2021-04-22 07:44:33注意:自定义函数要放在项目应用目录/common/common.php中。 这里是关键。模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### }说明:{ 和 $ 符号之间不能有空格,后面参数的空格就没有问题;#... -
Android自定义View构造函数分析
2021-05-26 07:32:08android开发中也都遇到过自定义View,第一步肯定是添加构造函数吧,那构造函数到底负责什么哪些方面的职责呢。第一个想到的应该是自定义View中需要设置的属性,没错这也是构造函数的重要职责之一。接下来我们就一起... -
Android自定义日历控件实例详解
2021-01-05 10:45:02下面我通过我在github上开源的Android-CalendarView项目为例,来介绍一下自定义控件的方法。该项目中自定义的控件类名是CalendarView。这个自定义控件覆盖了一些自定义控件时常需要重写的一些方法。 构造函数 为了... -
Android自定义半圆形圆盘滚动选择器
2021-01-20 10:15:07半圆形的滚动的转盘自定义view继承viewgroup,重写滑动事件,自定义圆盘上图片的摆放角度,至于蓝色和红色箭头图标指向的选中状态可以用坐标数组绘制一个区域来判断是否有符合条件的图标滚动到了这个位置,如果有的... -
Android自定义View中,四个参数的构造函数的含义
2021-05-26 19:50:50See https://code.google.com/p/android/issues/detail?id=12683 MyView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) The 3rd constructor works well if you have control over ...