自定义view

微信小程序自定义弹框组件

我们两清 提交于 2020-01-21 03:01:11
效果图: <!--components/popup/popup.wxml--> <view class="popup" hidden="{{flag}}"> <view class='popup-container'> <view wx:if="{{title}}" class="popup-title">{{title}}</view> <view> </view> <view class="popup-con"> <image src="{{image}}" /> <view>{{content}}</view> </view> <view class="popup-btn"> <text class="btn-no" bindtap='_error'>{{btn_no}}</text> <text class="btn-ok" bindtap='_success'>{{btn_ok}}</text> </view> </view> </view> // components/popup/popup.js Component({ /** * Component properties */ properties: { title: { // 属性名 type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object,

TabLayoutViewPagerDemo【TabLayout+ViewPager可滑动】

北战南征 提交于 2020-01-20 21:25:29
版权声明:本文为 HaiyuKing 原创文章,转载请注明出处! 前言 使用TabLayout搭配ViewPager实现可滑动的顶部选项卡效果。 效果图 代码分析 1、演示常规的设置。 2、通过自定义ViewPager(MyCustomViewPager)解决解决切换需要经过中间页的问题、实现控制viewpager是否可滑动的功能; 3.1、通过在Fragment中的OnCreateView中判断rootView是否为空来解决viewpager+fragment来回滑动fragment重新加载的问题; 3.2、还有一个方案是在自定义的viewpager适配器类中重写destroyItem方法,来解决重新加载的问题; 【核心就是不销毁fragment】 4、通过自定义Fragment基类(BaseLazyFragment)来实现配合viewpager使用时禁止懒加载的功能; 存在一个问题:那就是当选项卡比较多的时候,从首页切换到尾页,然后切换回来首页的时候,会重新请求数据,因为首页已经销毁了,执行了onDestroyView方法。 解决方案: 一、使用setOffscreenPageLimit()方法, 设置数字越大越好(可以设置总数目); 二、采用3.2方案; 使用步骤 一、项目组织结构图 注意事项: 1、 导入类文件后需要change包名以及重新import R文件路径 2、

自定义view 雷达图 百分比维度图

戏子无情 提交于 2020-01-19 08:48:21
效果图: 具体实现 public class RadarView extends View { private static final float maxValue = 100; // 最大刻度值 private int count = 5; // 数据个数 private float angle = (float) (Math.PI * 2 / count); private Paint circlePaint; // 圆环画笔 private float radius; // 最大半径 private int centerX, centerY; // 中心点 private Paint mainCirclePaint; // 整个圆环填充画笔 private Paint graduationValuePaint; // 刻度值画笔 private String[] graduationValues = {"0", "20", "40", "60", "80", "100"}; private Paint titlePaint; // 标签画笔 private String[] titles = {"标签a", "标签b", "标签c", "标签d", "标签f"}; private double[] data = {70, 50, 67, 80, 56}; private

RecycleView&&Framgment的使用

不问归期 提交于 2020-01-19 04:34:01
一..添加依赖 dependencies { //noinspection GradleCompatible implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:recyclerview-v7:28.0.0' } 二.布局文件 1.layout/activity_main..xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!--<FrameLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/>-->

SlidingPanelLayout学习与使用

。_饼干妹妹 提交于 2020-01-17 01:42:12
文章目录 SlidingPanelLayout 应用场景 常用API 使用方式 源码分析 总结 SlidingPanelLayout 应用场景 SlidingPaneLayout 是Android在android-support-v4.jar中推出的一个支持测滑面板的布局。例如:头条详情页,知乎详情页…都是支持侧滑移除Activity的。通过抓取手机页面的xml,可以看到他们使用的技术也都是SlidingPaneLayout。如果你也想实现这么一个功能,那么请移步下面。 SlidingPaneLayout 出来那么长时间了,第一次使用它,汗颜~~~ 常用API setSliderFadeColor :根据滑动的距离控制滑出的内容淡出的颜色亮度 setCoveredFadeColor : 根据滑动的距离设置左侧面板的阴影的亮度 setPanelSlideListener :设置面板的滑动监听,可以在回调中为底部面板设置效果 mOverhangSize属性:滑动到边界时,内容面板与边界的距离。需要设置为0 使用方式 网上有一些说在XML中直接添加,我觉得这个扩展性不是太好,建议使用API,而不使用XML布局。 // 截屏: 这个方法不会截取底部导航栏,但是截取到的内容底部有一块同导航栏同高的白块。 private static Bitmap captureScreen(Activity

自定义View——闹钟

梦想与她 提交于 2020-01-16 20:47:26
我们今天来自定义一个闹钟。效果如下: 第一步:自定义属性 在文件app/src/main/res/values/attrs.xml中加入自定义属性: < ? xml version = "1.0" encoding = "utf-8" ? > < resources > < declare - styleable name = "ClockView" > < attr name = "circle_color" format = "color" / > < attr name = "circle_scale_color" format = "color" / > < attr name = "sec_point_color" format = "color" / > < attr name = "min_point_color" format = "color" / > < attr name = "hour_point_color" format = "color" / > < attr name = "dot_color" format = "color" / > < / declare - styleable > . . . < / resources > 第二步:重写onMeasure 、onLayout、onDraw方法 重写onMeasure主要是为了解决,当wrap

Android 自定义 view(三)—— onDraw 方法理解

吃可爱长大的小学妹 提交于 2020-01-16 06:42:12
前言: 上一篇已经介绍了用自己定义的属性怎么简单定义一个view《 Android 自定义view(二) —— attr 使用 》,那么接下来我们继续深究自定义view,下一步将要去简单理解自定义view的一个比较重要的方法 onDraw(Canvas canvas) ,在探究 onDraw方法之前,我们必须先深入了解两个类Paint和Canvas 。 第一:认识Paint 在探究onDraw之前首先必须要认识两个类,这里给出非常不错的两个资料参考网站,我也是从这里得到想要知道的东西,简单的说这下面几篇文章已经够我们喝一壶了,这里我就不再献丑了 http://www.apihome.cn/api/android/Paint.html http://www.cnblogs.com/aibuli/p/efef9d774df97c553a8a0c0c3495ba35.html?utm_source=tuicool&utm_medium=referral http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1105/1907.html http://blog.csdn.net/harvic880925/article/details/39080931 第二:认识Canvas Canvas类简单理解就是表示一块画布

Django中间件

余生颓废 提交于 2020-01-15 21:53:18
目录 Django中间件 中间件介绍 中间件的流程图 Django中间件 中间件介绍 中间件 就是用来处理Django的请求和响应的框架级别钩子,用于全局范围内改变Django的输入和输出,说直白一点,就是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作,它本质上就是一个自定义类,类中定义了几个方法,Django框架会在请求的特定时间去执行这些方法。 它就是Django的"门户,保安" 只要是全局相关的功能都可以考虑使用Django中间件来完成 全局用户身份校验 全局用户访问频率校验 用户访问黑名单 用户访问白名单 Settings.py文件中,以下这些就是中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware

Android自定义View之测量之MeasureSpec分析

。_饼干妹妹 提交于 2020-01-15 10:26:16
众所周知,Android的自定义View有三大方法,分别为测量、布局、绘制。 在两年多之前,我进行过绘制过程的大致梳理,然而就没有在研究过这个流程了。然后,直到有一天,一次面试过程中,被面试官问道:onMeasure(int widthMeasureSpec, int heightMeasureSpec)里,这个两个值应该如何去看? 我恍然大悟,我一直漏掉这一块(之前的Android自定义布局,这个方法几乎没有用到过)。尝试去了解,理解得云里雾里的。最近在博智林开发与机器人相关的App,于是乎,对于 | 与 & 这两个概念,以及负数在二进制中如何表示有了更深的理解。原来才知道,这个测量事件的两个值,是这样的理解。 Android的自定义View onMeasure方法,会带着两个参数,分别是widthMeasureSpec与heightMeasureSpec。 @Override protected void onMeasure ( int widthMeasureSpec , int heightMeasureSpec ) { super . onMeasure ( widthMeasureSpec , heightMeasureSpec ) ; } 那么,这个两个参数到底是什么含义呢?有人说是元数据,我回过头来看,确实理解了元数据这个概念,但是,如果你还没有理解

Android开发的艺术探索第六章

亡梦爱人 提交于 2020-01-15 01:39:23
第6章 Android的Drawable Drawable在开发中有着自己的优点:首先,它使用简单,比自定义View的成本要低;其 次,非图片类型的Drawable占用空间较小,这对减小apk的大小也很有帮助。 6.1 Drawable简介 在Android的设计中,Drawable是一个抽象 类,它是所有Drawable对象的基类,每个具体的Drawable都是它的子类。 Drawable的内部宽/高这个参数比较重要,通过getIntrinsicWidth和getIntrinsicHeight这 两个方法可以获取到它们。但是并不是所有的Drawable都有内部宽/高,比如一张图片所 形成的Drawable,它的内部宽/高就是图片的宽/高,但是一个颜色所形成的Drawable,它 就没有内部宽/高的概念。另外需要注意的是,Drawable的内部宽/高不等同于它的大小, 一般来说,Drawable是没有大小概念的,当用作View的背景时,Drawable会被拉伸至 View的同等大小。 6.2 Drawable的分类 Drawable的种类繁多,常见的有BitmapDrawable、ShapeDrawable、LayerDrawable以 及StateListDrawable等,这里就不一一列举了,下面会分别介绍它们的使用细节。 6.2.1 BitmapDrawable