自定义view

微信小程序自定义组件

China☆狼群 提交于 2019-12-03 12:08:56
前言 微信小程序自1月19号发布后,可谓是有人欢喜有人忧啊.曾经对它一度抱有各种期待的前端工作者们在张总的一句句:"不行","不能"中小失所望. 但它作为一种轻型应用工具,给我们开发者带来的便利也是无可厚非的. 而自定义组件这个大功能呢也是从小程序基础库版本 1.6.3 开始支持的,低版本需做兼容处理,在搜了网上一堆微信小程序自定义组件的说明后,我好像发现都没有太好的介绍到它,所以今天在这里博主也是想给大家仔细的介绍介绍微信小程序的这个自定义功能,有说的不好的地方望小伙们指正,谢谢!( ╹▽╹ ) 使用自定义组件 应用场景: 当我们在设计我们项目的时候会发现在不同的页面中,有时候会用到相同的功能模块,此时我们就可以将这些相同的部分提取出来并且单独设为一个"页面",然后在要应用到它的地方引用就可以了,以上就是我对自定义组件的个人理解,具体做法请阅读以下内容. 1.创建自定义组件 在上面我介绍了,自定义组件其实就像是一个页面,所以我们在编写它的时候也应该像设计页面一样,具备 json wxml wxss js 这四个文件. 在这里博主就以编写案例的形式向大家介绍自定义组件. 一. 前期准备 1.首先,新建一个名为 wxcomponent 的项目, 2.在pages文件夹下创建一个 components 文件夹用来盛放我们所有的自定义组件. 3.在components文件夹下创建一个

如果你在中小厂,这些你一定要搞懂

孤人 提交于 2019-12-03 04:51:22
今天给大家分享一些初中级的面试专题,比较适合在一些中小厂的开发者,跟随我一起来看看吧。 同样,关于下列PDF里所有的知识, 绝大部分有配套的视频.代码.源码.资料和笔记,对于我整理的核心PDF笔记感兴趣的 可以点击 关于我 联系我获取 (更多完整项目下载。未完待续。源码。图文知识后续上传github。) 初级面试专题(中小厂) 1、导致内存泄露的原因有哪些? 内存泄露的根本原因:长生命周期的对象持有短生命周期的对象。短周期对象就无法及时释放。 静态内部类非静态内部类的区别(Handler 引起的内存泄漏。) 静态集合类引起内存泄露 单例模式引起的内存泄漏。 解决:Context是 ApplicationContext ,由于 ApplicationContext 的生命周期是和app一致的,不会导致内存泄漏 注册/反注册未成对使用引起的内存泄漏。 集合对象没有及时清理引起的内存泄漏。通常会把一些对象装入到集合中,当不使用的时候一定要记得及时清理集合,让相关对象不再被引用。 减少内存对象的占用 ArrayMap/SparseArray 代替 hashmap 避免在android里面使用 Enum 减少bitmap的内存占用 inSampleSize :缩放比例,在把图片载入内存之前,我们需要先计算出一个合适的缩放比例,避免不必要的大图载入。 decode format:解码格式

android--------自定义控件 之 属性篇

白昼怎懂夜的黑 提交于 2019-12-03 04:43:18
上篇介绍了自定义控件的一个简单案例,本篇文章主要介绍如何给自定义控件自定义一些属性。 Android 中使用自定义属性的一般步骤: 定义declare-styleable,添加attr 使用TypedArray获取自定义属性 设置到View上 自定义属性都存在于/value/attr.xml文件中,以如下格式存在 <resource> <declare-styleable name="自定义属性名称"> <attr name="属性名称" format="属性种类"/> ...... </declare-styleable> </resource> format属性值: reference:引用资源 string:字符串 Color:颜色 boolean:布尔值 dimension:尺寸值 float:浮点型 integer:整型 fraction:百分数 enum:枚举类型 flag:位或运算 代码说话: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="CircularAttrsView"> <!--圆形绘制的位置--> <attr name="circular_circle_gravity"> <flag name="left" value="0"/> <flag name=

android--------自定义控件 之 基本实现篇

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-03 04:43:05
前面简单的讲述了Android中自定义控件中的几个方法,今天通过代码来实现一个简单的案例 自定义一个扇形图 自定义控件示例: 这里先介绍继承View的方式为例 public class CircularView extends View { /**** * 有三个参数的构造函数中第三个参数是默认的Style, * 这里的默认的Style是指它在当前Application或Activity所用的Theme中的默认Style,且只有在明确调用的时候才会生效, */ private final static String TAG = CircularView.class.getName(); private Paint mPaint; private RectF oval; public CircularView(Context context) { super(context); init(); } public CircularView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public CircularView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs,

android 中View的 onAttachedToWindow() onDetachedFrmWindow()方法释放

家住魔仙堡 提交于 2019-12-03 04:06:17
在自定义View的代码里面,我们可能启动了一个Handler延时操作一个信息,但是这个时候我们关闭了Activity,但是Handler并没有释放掉,延时的操作还是会执行的,并没有停止, Handler如果在Activity里面可以在onDestory中释放 在View中有没有类似的方法呢。 View的生命周期 protected void onAttachedToWindow() View初次创建时调用 protected void onDetachedFromWindow() View销毁时调用 具体来说 View是与Activity绑定的,Acitivty onCreate(), onDesoty()和View中onAttachedToWindow(),onDetachedFromWindow()的方法的顺序如下: 来源: oschina 链接: https://my.oschina.net/u/1175746/blog/598365

android插件化主题方案 (上--LayoutInflateFactory的使用)

青春壹個敷衍的年華 提交于 2019-12-03 02:52:35
android插件化主题方案 (上–LayoutInflateFactory的使用) 标签(空格分隔): android 主题 皮肤 插件化 “做成网易音乐那样的!” 这次产品经理提出的需求就是像网易音乐那样可以更换主题皮肤,当然皮肤切换很多app都有,产品经理也明确表示需要后台有皮肤主题管理能力,所以这次的功能免不了要做成外挂式,不能简单的在资源文件编写多套value的方式实现。 那我们就来一步步的实现吧。 首先,我们先不管插件化的方式,先来看看如何在不更改已编写xml的情况下,快速替换view的资源。 setContentView() 做了些什么? 我们知道默认 onCreate() 执行时,马上会调用 setContentView(int id) 方法,将layout资源与activity进行绑定,我们看看 setContentView 做了些什么。 public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(layoutResID); initWindowDecorActionBar(); } 这是 Activity 类中的 setContentView() 的方法,我们继续往下看。 @Override public void setContentView(int

小程序自定义tabbar custom-tab-bar 6s出不来解决方案,cover-view不兼容

谁都会走 提交于 2019-12-03 02:29:54
1.从微信小程序的官网扣下来的demo,实际测试中,发现6s ios10 系统不兼容,里面的内容出不来 <cover-view class="tab-bar"> <cover-view class="tab-bar-border"></cover-view> <cover-view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab"> <cover-image src="{{item.checked ? item.selectedIconPath : item.iconPath}}" ></cover-image> <cover-view >{{item.text}}</cover-view> </cover-view> </cover-view> 2.实际效果如下: 底部的tabbar没出来 3.把 cover-view 改成 view 把 cover-image 改成 image 标签 <view class="tab-bar"> <view class="tab-bar-border"></view> <view wx:for="{{list}}" wx:key="index"

Android基础View 绘制的流程

左心房为你撑大大i 提交于 2019-12-03 00:39:48
View 绘制机制 1. View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw。整个 View 树的绘图流程在 ViewRoot.java 类的 performTraversals() 函数展开,该函数所做 的工作可简单概况为是否需要重新计算视图大小(measure)、是否需要重新安置视图的位置(layout)、以及是否需要重绘(draw),流程图如下: View 绘制流程函数调用链 图片来自 https://plus.google.com/+ArpitMathur/posts/cT1EuBbxEgN 需要说明的是,用户主动调用 request,只会出发 measure 和 layout 过程,而不会执行 draw 过程 2. 概念 measure 和 layout 从整体上来看 Measure 和 Layout 两个步骤的执行: 树的遍历是有序的,由父视图到子视图,每一个 ViewGroup 负责测绘它所有的子视图,而最底层的 View 会负责测绘自身。 具体分析 measure 过程由 measure(int, int) 方法发起,从上到下有序的测量 View,在 measure 过程的最后,每个视图存储了自己的尺寸大小和测量规格。

开源项目源码解析-Android Universal Image Loader 源码分析

隐身守侯 提交于 2019-12-03 00:38:12
Android Universal Image Loader 源码分析 本文为 Android 开源项目源码解析 中 Android Universal Image Loader 部分 项目地址: Android-Universal-Image-Loader ,分析的版本: eb794c3 ,Demo 地址: UIL Demo 分析者: huxian99 ,校对者: Grumoon 、 Trinea ,校对状态:完成 1. 功能介绍 1.1 Android Universal Image Loader Android Universal Image Loader 是一个强大的、可高度定制的图片缓存,本文简称为 UIL 。 简单的说 UIL 就做了一件事——获取图片并显示在相应的控件上。 1.2 基本使用 1.2.1 初始化 添加完依赖后在 Application 或 Activity 中初始化 ImageLoader ,如下: public class YourApplication extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration

ReactNative常用组件之ParallaxScrollView

匿名 (未验证) 提交于 2019-12-03 00:38:01
看效果: 首先安装第三方组件: npm install react -native -parallax -scroll -view 做了一个简单的封装 看代码: import React, {Component} from 'react' ; import { Dimensions, Image, ListView, PixelRatio, StyleSheet, Text, View, Platform, ToastAndroid, TouchableHighlight } from 'react-native' ; import ParallaxScrollView from 'react-native-parallax-scroll-view' ; const instructions = Platform.select({ ios : 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu' , android : 'Double tap R on your keyboard to reload,\n' + 'Shake or press menu button for dev menu' , }); export default class AboutComponent { /** *