自定义view

ListView详细介绍与使用

与世无争的帅哥 提交于 2019-11-28 18:22:52
前言介绍: 关于 ListView 我们大家都应该是非常的熟悉了,在 Android 开发中是经常用到的,今天就再来回顾一下, ListView 的使用方法,和一些需要优化注意的地方,还有日常开发过程中的一些小技巧和经验。 ListView 简介 ListView 是 Android 系统为我们提供的一种列表显示的一种控件,使用它可以用来显示我们常见的列表形式。继承自抽象类 AdapterView 。 类的关系图: 表现形式 这就是一种最简单的 ListView 的表现形式,黑色框就是 ListView 控件,其中由一个个的 item 组成(红色框内容),然后可以通过向下滑动来查看很多的条目。 工作原理 ListView 仅是作为容器(列表),用于装载显示数据(就是上面的一个个的红色框的内容,也称为 item)。item 中的具体数据是由适配器(adapter)来提供的。 适配器(adapter):作为 View (不仅仅指的 ListView)和数据之间的桥梁或者中介,将数据映射到要展示的 View 中。这就是最简单适配器模式,也是适配器的主要作用! 当需要显示数据的时候,ListView 会从适配器(Adapter)中取出数据,然后来加载数据。 ListView 负责以列表的形式向我们展示 Adapter 提供的内容 缓存原理 前面讲了 ListView 负责把 Adapter

自定义时间选择器

非 Y 不嫁゛ 提交于 2019-11-28 16:22:16
/** * 时间选择器 * */ public class DatePicker { private Context mContext; private SparseArray<View> mViews; private int mlayoutResId; private PopupWindow popupWindow; private View vPopupWindow; List<String> textList1 = new ArrayList<>(); List<String> textList2 = new ArrayList<>(); List<String> textList3 = new ArrayList<>(); List<String> textList4 = new ArrayList<>(); private int year; private int month; private int day; private String time; private int hour; private int howday; private String week; private int minute; private WheelView wheelView1; private WheelView wheelView2; private WheelView

Android进阶之绘制-自定义View完全掌握(三)

て烟熏妆下的殇ゞ 提交于 2019-11-28 15:08:21
自定义View系列的第三篇博客,我们来学习如何实现自定义下拉框。 今天的程序,我们来实现这样的一个效果。 布局非常简单,我们直接开始编码。 修改activity_main.xml文件的代码。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.itcast.test0430.MainActivity"> <EditText android:id="@+id/et_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="middle" android:hint="请输入内容..." android

Android进阶之绘制-自定义View完全掌握(二)

試著忘記壹切 提交于 2019-11-28 15:08:12
这是自定义View系列的第二篇博客,我们继续来学习关于自定义View的知识。 今天我们来实现一下广告条案例。 我们要实现的是这样的一个效果。 要想实现这样的效果,我们可以借助ViewPager控件,然后加上自定义的一些控件即可完成。那么现在就开始吧。 新建一个android项目。 修改activity_main.xml文件。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.itcast.test0429.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent"

Android进阶之绘制-自定义View完全掌握(一)

扶醉桌前 提交于 2019-11-28 15:08:10
Android的UI设计可以说是决定一个app质量的关键因素,因为人们在使用app的时候,最先映入眼帘的就是app的界面了,一个美观、充实的界面能够给用户带来非常好的体验,会在用户心中留下好的印象。 对于UI设计,Android原生的控件加上一些开源库的使用,已经能够满足大部分的UI需求,但是,某些比较新颖、花哨的控件效果,我们只能通过自定义View来实现,那么,从该篇博客开始,我将记录关于Android自定义View的学习内容,并将其整理呈现给大家。 我们来实现一个优酷菜单案例,在案例中会涉及到很多方面的知识。 案例效果如下: 对activity_main.xml文件进行修改。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com

54 Django的视图层和模板层

时光毁灭记忆、已成空白 提交于 2019-11-28 11:39:02
目录 一、视图层 1. 小白必会三板斧 2. JsonResponse 3. FBV与CBV 3.1 FVB 3.2 CBV 4. CBV的源码 5. 给CBV加装饰器 二、模板层 1. 模板语法 2. 模板传值/取值 3. 过滤器 4. 标签 (逻辑相关) 5. 自定义过滤器和标签 5.1 如何自定义过滤器 5.2 自定义过滤器的使用 6. 模板的继承 7. 模板的导入 一、视图层 1. 小白必会三板斧 HttpResponse render redirect 视图函数必须要有一个返回值,并且返回值的数据类型必须是HttpResponse对象。 2. JsonResponse 通常情况下前后端数据交互采用的都是json的字符串(字典),想要使用json格式的数据,需要进行序列化与反序列化的操作。 python后端: # json序列化 json.dumps() # json反序列化 json.loads() js前端: // 序列化 JSON.stringify() // 反序列化 JSON.parse() 在Django项目中,想要将json格式的数据发送到前端,也需要先将数据序列化: def index(request): user_dic = {'name':'爆裂码畜xanxas','password':'123'} json_str = json.dumps(user

自定义view的使用(一)

落爺英雄遲暮 提交于 2019-11-28 08:39:55
自定义View 记录第一次写博客 记录第一次写博客 希望可以一直坚持,哈哈哈哈!小黑菜的变白之路。 public class MyView extends View: 定义MyView类继承View; 2.在xml文件里引入完整包名, 代码 < com . example . myapplication1 . MyView android : id = "@+id/smileview" android : background = "#FF0000" android : layout_gravity = "center_vertical" android : layout_width = "wrap_content" android : layout_height = "wrap_content" / > 安装界面绘制流程: measure( 测量控件大小),layout(摆设控件),draw(在view中绘画)。 View中方法 : onMeasure()(指定自己的宽高)——>onDraw()(绘制自己的内容) ViewGroup中方法 : onMeasure()(指定自己的宽高和所有子View的宽高) ——> onLayout() (摆放所有子view)——> onDraw()(绘制内容) MyView代码如下: import android . content .

day54

大憨熊 提交于 2019-11-28 07:28:00
目录 视图层 模板层 视图层 小白必会三板斧 HttpResponse render redirect 视图函数必须有一个返回值 并且返回值的数据类型必须是HttpResponse对象 JsonResponse 前后端分离 ​ 前后端数据交互 该如何进行? ​ 通常情况下前后端的数据交互采用的都是json的字符串(字典) 后端只需要写好相应的url接口 前端访问你这个接口 你只需要返回一个大字典即可+开发文档 用来告诉前端工程师 你这个接口能够返回那些数据 前后端序列化都用哪些方法 python后端 js json.dumps JSON.stringify json.loads JSON.parse def index(request): user_dic = {'name':'jason好帅哦 我好喜欢~','password':'123'} # 如何让json不自动帮你对中文进行转码,把ensure_ascii设置为false,默认的是true # json_str = json.dumps(user_dic,ensure_ascii=False) # return HttpResponse(json_str) # return JsonResponse(user_dic,json_dumps_params={'ensure_ascii':False}) l = [1,2,3

uniapp自定义简单省市区联动组件

浪尽此生 提交于 2019-11-28 05:48:17
又双叒一个uniapp组件 最近有一个选择地址的需求,就写了一个省市区联动选择器。 选择日期使用的picker,就照着它简单的整了一个,使用网络请求城市数据,还用到了vuex组件数据共享。 本来自己整了一个底部弹窗, 又在插件市场看到了更好的底部弹窗 :LuPopupWrapper--弹窗容器 , 所以就用了这个。 依然发布到了插件市场: http://ext.dcloud.net.cn/plugin?id=708 看一下效果吧 具体实现 css就不贴出来了,下载可以看到。 第一、底部弹出框 <view class="popup-layout-wrap" :class="popuplayoutClass" > <view class="popup-layout-content" :class="popupContentClass" :style="[{height:height}]"> <slot> </slot> </view> <view v-if="maskShow" class="popup-layout-mask" @tap="close(maskClick)"></view> </view> 这里的底部弹出框用了插件市场的,简单的看一下布局。 slot插槽用于填充弹出框的内容。 最主要的就是弹出和关闭。属性就一个height,控制弹出的高度,其他的暂时不需要。 第二

博客园自定义皮肤

半世苍凉 提交于 2019-11-28 05:28:12
一、背景 在园子里浪迹有很长一段时间了,里面遇到了很多大神,学习了很多知识,也帮助我解决很多现实工作的问题……非常感谢各位园友们的分享。说来惭愧,在园子这么久,很少发布博文。主要原因是自己有点懒,其他的客观原因也就不说了,每个人都有自己当时的想法。结果现在就有一种“我虽在江湖,但江湖没有我的传说”的尴尬,本着“迟到比不到好”的思想,就想着在这里记录一下自己平凡的学习成长历程,也希望能帮助园友们避免我踩过的坑。 之前在逛园子的时候,就发现有些博主的主题很好看,查找了一些攻略,根据自己的喜好,简单的修改了主题样式以及添加了一些功能。如果你想定制自己的博客,可以跟我一起,需要有css基础。 二. 定制自己的博客 1、准备工作 先在博客主页依次点击“ 管理 ”=》“ 设置 ”,下面找到“ 申请JS权限 ”,等待审核,审核通过之后才能,定制的主题才能成功。同时在博客皮肤那里选择博客园提供的皮肤。我没有像园子里面的大神直接自定义一套css样式,我觉得站在巨人的肩上,一样也可以摘到自己的星星。于是我选择了我觉得合适的皮肤[“SimpleBlue”],每个人的爱好不一样,你可以选择你喜欢的皮肤进行修改,不过下面的一些样式可能需要做一些修改,具体看你想要怎么展示。 自定义主题样式操作,对于你不满意的元素,你可以在该页面按F12调出Debug工具,然后对该元素的css进行修改,调整满意之后