自定义view

安卓课设-音乐播放器

守給你的承諾、 提交于 2019-12-06 16:50:51
目录 一 需求分析... 1 1.1用例分析... 1 二 系统设计... 2 三 系统测试... 3 3.1 测试用例... 3 四 系统实现... 4 附件... 11 一 课设题目... 11 二 技术说明... 11 三 UML类图... 12 四 代码... 12 4.1 清单文件... 12 4.2 布局文件... 13 4.2.2 源文件... 14 4.3 Java代码... 22 一 需求分析 智能手机需要音乐播放器才能播放手机内的音频文件,本软件具备音乐播放器的播放歌曲、歌曲列表、拖动进度等基本功能,同时本播放器界面简洁美观,操作简单便捷。 1.1用例分析 (1) 注册 拥有账号才能登录。 (2) 登录 输入注册的账号和密码登录。 (3) 播放器主页 进入播放页面点击列表中的歌曲或者点击播放按钮都可以实现播放。 二 系统设计 音乐播放器由欢迎页面、注册页面、登录页面、播放器主页、退出登录页面组成。 欢迎页面由一个haunying.xml设置background加一个button组成,在haunying.java中用intent跳转登录页面(运用SharedPreferneces存储在下次打开登录页面可以显示保存的账号和密码)。 登录页面由activity_main.xml设置TextView注册,在MainActivity.java设置跳转注册页面。

cookie和session django中间件

寵の児 提交于 2019-12-06 12:59:23
目录 一、cookie和session 1. 为什么要有cookie和session 二、cookie 1. 什么是cookie 2. django中关于cookie的使用 (1)后端设置cookie (2)后端获取cookie (3)设置cookie的超时时间 (4)删除cookie 三、session 1. 什么是session 2. django中关于session的使用 (1) 设置session (2)获取session (3)设置失效时间 (4)删除session 四、token 五、django中间件 1. 数据通过django中间件的流程 (1)正常流程 (2)特殊情况 2. django中间件中常用的方法 (1) process_request (2) process_response (3) process_view (4) process_template_response (5) process_exception 3. 自定义中间件 (1)自定义中间件的步骤 (2)自定义django中间件实例 一、cookie和session 1. 为什么要有cookie和session 目的是为了保存客户端的用户状态 http协议是无状态的 二、cookie 1. 什么是cookie 简单来说,cookie就是保存在客户端浏览器上的键值对

中间件

偶尔善良 提交于 2019-12-06 12:55:43
目录 中间件 中间件介绍 自定义中间件: process_request process_response process_view process_exceptior process_template_response 中间件版登录验证 中间件 中间件介绍 中间件介绍: 用来处理django的请求和响应的框架级别的钩子,是一个轻量,低级的插件系统 用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能 中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作,它本质上就是一个自定义类,类中定义了几个方法,Django框架会在请求的特定的时间去执行这些方法 功能展示: 做一些网站的全局性功能 考虑使用django的中间件 1.全局的用户登录校验 2.全局的用户访问频率校验 3.全局的用户权限校验() --》全局范围内改变Django的输入和输出 自定义中间件: django默认的中间键: MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django

Android Canvas绘图详解(图文)

本秂侑毒 提交于 2019-12-06 10:25:28
Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0。今天我们主要要了解的是2D相关的,如果你想看3D的话那么可以跳过这篇文章。 大 部分2D使用的api都在android.graphics和android.graphics.drawable包中。他们提供了图形处理相关的: Canvas、ColorFilter、Point(点)和RetcF(矩形)等,还有一些动画相关的:AnimationDrawable、 BitmapDrawable和TransitionDrawable等。以图形处理来说,我们最常用到的就是在一个View上画一些图片、形状或者自定 义的文本内容,这里我们都是使用Canvas来实现的。你可以获取View中的Canvas对象,绘制一些自定义形状,然后调用View. invalidate方法让View重新刷新,然后绘制一个新的形状,这样达到2D动画效果。下面我们就主要来了解下Canvas的使用方法。 Canvas对象的获取方式有两种:一种我们通过重写View.onDraw方法,View中的Canvas对象会被当做参数传递过来,我们操作这个Canvas,效果会直接反应在View中。另一种就是当你想创建一个Canvas对象时使用的方法: 1 2 Bitmap b = Bitmap.createBitmap

Android 手把手教您自定义ViewGroup(一)

旧时模样 提交于 2019-12-06 08:55:00
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/38339817 , 本文出自: 【张鸿洋的博客】 最近由于工作的变动,导致的博客的更新计划有点被打乱,希望可以尽快脉动回来~ 今天给大家带来一篇自定义ViewGroup的教程,说白了,就是教大家如何自定义ViewGroup,如果你对自定义ViewGroup还不是很了解,或者正想学习如何自定义,那么你可以好好看看这篇博客。 1、概述 在写代码之前,我必须得问几个问题: 1、ViewGroup的职责是啥? ViewGroup相当于一个放置View的容器,并且我们在写布局xml的时候,会告诉容器(凡是以layout为开头的属性,都是为用于告诉容器的),我们的宽度(layout_width)、高度(layout_height)、对齐方式(layout_gravity)等;当然还有margin等;于是乎,ViewGroup的职能为:给childView计算出建议的宽和高和测量模式 ;决定childView的位置;为什么只是建议的宽和高,而不是直接确定呢,别忘了childView宽和高可以设置为wrap_content,这样只有childView才能计算出自己的宽和高。 2、View的职责是啥? View的职责,根据测量模式和ViewGroup给出的建议的宽和高

day52总结

时光怂恿深爱的人放手 提交于 2019-12-06 08:03:57
目录 JsonResponse对象 前后端分离 CBV及其源码分析 CBV: 基于类的视图, Class Based Views CBV的源码, 要求: 能直接说出流程 为什么CBV能够根据请求方式的不同, 自动执行不同的方法 给CBV加装饰器的方式 模板语法 模板语法的格式 模板传值 过滤器 标签 for循环 if判断 组合使用 for循环字典 模板语法的取值 自定义过滤器和标签 自定义前必须要有三步准备: 自定义过滤器: 使用自定义过滤器 自定义标签 使用自定义标签 自定义inclusion_tag 使用inclusion_tag, 重要 模板的继承 模板的导入 JsonResponse对象 小白必会三板斧: HTTPResponse, render, redirect 视图函数必须要有一个返回值, 并且返回值的 数据类型必须是HTTPResponse对象 render: Template + Context def test(request): from django.template import Template, Context html_obj = Template('<h1>{{user}}</h1>') data_obj = Context({'user': {'user_name': 'jason'}}) complete_html = html_obj

微信小程序自定义顶部导航demo

泪湿孤枕 提交于 2019-12-06 05:12:57
注释:自定义导航需要自备相应图片 一、设置自定义顶部导航   Navigation是小程序的顶部导航组件,当页面配置 navigationStyle 设置为 custom 的时候可以使用此组件替代原生导航栏。   1.全局顶部导航自定义,在app.json的“window”里添加"navigationStyle": "custom"   2.只在某一个页面自定义顶部导航,在该页面的json文件里添加"navigationStyle": "custom" 二、获取手机屏幕数据,app.js //app.js const Utils = require('./utils/utils') App({ onLaunch: function () { // 获取屏幕参数 try { const res = wx.getSystemInfoSync() if (res.platform == 'ios') { this.globalData.platform = 'ios' } else if (res.platform == 'android') { this.globalData.platform = 'android' } // 导航高度 let navHeight = res.statusBarHeight // 屏幕宽度/高度,单位px this.globalData

安卓图片(ImageView):展示大图、双击放大、触摸放大缩小、滑动切换、长按保存等

我只是一个虾纸丫 提交于 2019-12-06 03:25:07
安卓图片(ImageView):展示大图、双击放大、触摸放大缩小、滑动切换、长按保存等 背景:由于项目中需要做一个图片展示功能,大概就是在一个页面中有一个listview或者recyclerview的布局,然后item中有图文混排,点击图片后能看大图,并且能触摸放大,双击放大,触摸缩小,多张图片的话还可以滑动切换,长按图片还可以保存到本地等操作,然后就开始按着需求设计功能,由于网上也有很多类似demo,简直满坑满谷,所以就不在介绍各种原理及实现方法,功能很简单,代码也很easy,主要就是依赖photoView开源代码完成,各位看官就将就一下吧: - 1.怎样展示大图 - 2.自定义imageview - 3.多张图片滑动 - 4.长按保存,取消 1. 首先点击图片后要展示当前所点击的图片大图,用什么承载这张图片呢,这里我用的是dialog,下面po出代码,注释很详细,放心阅读: /** * 点击图片后,调用该展示大图方法 * @param mPosition */ public void showPictureDialog(final int mPosition) { //创建dialog mDialog = new Dialog(this, R.style.PictureDialog); final Window window1 = mDialog.getWindow() ;

底部导航栏实现方式多样化

邮差的信 提交于 2019-12-06 03:19:00
前沿 距Google I/O(2014)最新发布的Material Design Android 设计风格已经有一段时间了, 2016年Google在 Android Design Support Library 25 基础上增加了 一个BottomNavigationView 新控件, 相比之前实现导航栏的方式,如LinearLayout + TextView(使用android:drawableTop属性+selector状态切换)、 LinearLayout + RelativeLayout(TextView+ImageView) RadioGroup + RadioButton,2015年Google推出的兼容包Android Design Support Library中的TabLayout等 该控件提供更简洁的方式实现功能模块导航,符合材料设计规范, 效果图如下: BottomNavigationView 继承自 FrameLayout 对外暴露了OnNavigationItemSelectedListener接口,便于对子视图点击事件的处理,可以通过此接口动态 改变文字颜色 图标颜色; 在XML需要了解其以下属性 (记得添加 xmlns:app="http://schemas.android.com/apk/res-auto") app:itemIconTint :

高级UI晋升之自定义View实战(八)

我是研究僧i 提交于 2019-12-06 00:15:30
更多Android高级架构进阶视频学习请点击: https://space.bilibili.com/474380680 本篇文章自定义流式布局来进行介绍: 一般常见的流式布局由两种,一种是横向的个数固定,列表按照竖向进行排列。另一种是横向先排,横向排满之后再竖向排列。而本框架实现是以第二种方式进行处理。 ​ 那么这个框架到底该如何使用呢? 一、引入资源 这里提供两种方式,引入资源文件。 1、在build.gradle文件中添加以下代码: allprojects { repositories { maven { url 'https://jitpack.io' } } } dependencies { compile 'com.github.zrunker:ZFlowLayout:v1.0' } 2、在maven文件中添加以下代码: <repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories> <dependency> <groupId>com.github.zrunker</groupId> <artifactId>ZFlowLayout</artifactId> <version>v1.0</version> <