当手上项目少的时候我们改做些什么?

好多人选择了研究某种技术,我觉得我们需要做的是开阔我们的视野。
例如我们就拍了一个小片子,包括剧本,拍摄,后期制作。建设网站,域名申请 备案,网络推广等。有个全系的小了解

下面是我们的小片欢迎吐槽!!!!

点击打开链接


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
最近接到一个任务,就是要修改原来用的官方support包TabLayout中的指示器线宽,改成固定值,当然网上有什么反射加padding什么的,可是治标不治本,切Tab过渡动画也加不了,什么?你告诉我github又xxx类似控件,可是为什么我要放弃google大神的源码呢,改改就能增加新功能了呢,为了达到目的,我就开始了下面一系列骚操作。0. 老规矩,先放效果图1. 骚操作之一:copy support包TabLayout 一份当做自己的自定义view本次骚操作是基于support '27.1.0'版本,从support '27.1.0'拷出文件到我的项目目录如下图,蓝色部,四个文件,当然不是一帆风顺的,需要改点包名,取消掉一下注解警告,总之后面会放出源码 不同的版本可能需要拷贝出来的文件不一样哟,于support '27.1.0'版本需要拷出上图蓝色的4个文件2. 骚操作之二: fuck源代码,读懂之后开始改造首先指示器的线是画出来的,关键代码如下 (以下改动代码均为tabLayout类)   canvas.drawRect(mIndicatorLeft, getHeight() - mSelectedIndicatorHeight,                             mIndicatorRight, getHeight(), mSelectedIndicatorPaint);OK, mIndicatorLeft是滚动或者点击切tab时候通过偏移量计算出来的,总之不重要,完成第一个目标。修改指示器线宽,思路呢,就是给mIndicatorLeft和mIndicatorRight做一个偏移量就行了, 看看我怎么改的吧其中2个成员变量是我在SlidingTabStrip类中新增的 private int mSelectedIndicatorWidth =  dpToPx(27);;         private int mMinTabWidth = Integer.MAX_VALUE;我这里偷懒一下就不做方法暴露了,直接写死了线宽为27dp了好了,已经完成修改线宽目标了。(扩展一下:这里你也可以修改draw方法,画个图,或者画个小圆圈什么的)接下来增加指示线滑动切tab的过渡动画很简单我就放代码吧,关键就是在onPageScrolled方法里面做点手脚总共改动就50来行吧,就达成效果了。是不是很简单。(简单才怪,总之做出来之后觉得确实蛮简单的) 这样改好处多多,为什么呢?xml基本不需要改变,tablayout名字改一下,代码也是导包改一下,替换官方tablayout的时候代码几乎不需要变化,是不是很爽?3. github下载,喜欢就给个star吧,如果对你有帮助的话https://github.com/zjw-swun/AppOrder4. 总结官方support包就是可以这么任性的拷贝出来,有时候一个拷出一个类根本没涉及到别的类,善假于物也。
各类的属性和方法: 书籍(Book): 可以将借书还书的活动写成日志,记录到某个文件当中 private Integer id; // 书的id(主键、递增、唯一) private String name; // 书名 private String pos; // 书的位置 private String type; // 书的类型 private String info; // 书的简介 private Integer state; // 书籍状态可以使用单选框来限定 // 书的状态(0表示未被借出,1表示已被借出,2表示被续借,3表示逾期, 4表示丢失,5表示损毁,6表示其他情况) private String remark; // 书的备注 private Integer owner; // 借书的同学的id(还书之后为null) private String borrowBookDate; // 借书的时间(还书之后为null) private String returnBookDate; // 还书的时间(还书之后为null) // 书的总数量(???) 可以直接用SELECT * FROM table where state=0 然后统计list.size() 留言(Evaluation): private Integer evaluationId; // 该留言的id private Integer adminId; // 如果是管理员留言的话,管理员的id private Integer studentId; // 如果是学生留言的话,学生的id private Integer bookId; // 被留言的书的id private String message; // 留言的内容 学生(Student): private Integer id; private String number; private String username; private String password; private String tel; private String email; private Integer credit; // 信誉等级(通过调用不同的函数,根据信誉等级来设置每个同学能借书和续借书的数量) private Integer bookCnt; // 每个月借的书的数量 private Integer bookRenewal; // 每个月能续借的书籍 private String bookId; // 不同的书的id之间使用,割开 管理员(Admin): private Integer id; private String username; private String password; 登录逻辑: 用户登录之前: 到时候会将项目部署到我的服务器上面,所以会有一个公网IP(项目地址) 输入项目地址,进入index(初始页面): 页面用来展示介绍咱项目的具体内容和信息 并且提供学生的登录、注册以及管理员的注册按钮 (这里可以用别人现成的网页改一下) 学生注册页面: 输入用户的信息进行注册(这些内容都可使用正则表达式进行验证) 学号:必填、不可更改、不可重复(使用Ajax异步进行数据库的连接验证学号是否重复) 密码:长度限制 手机号:格式限制(可能需要发送验证码?) 邮箱:格式限制(可能需要发送验证码?) 最后可能需要验证码? 注册完成之后,Ajax验证注册是否成功 成功:提示用户成功,自动跳转到登录页面 失败:提示用户失败,还是在当前页面 与学生登录和管理员登录之间可以相互跳转(response完成重定向) 注册的时候不要以form表单的形式直接提交信息,要采用ajax,以json的形式,向后台提交信息。 学生登录页面: 登录信息:学号、密码登录 用cookie(加密)使十天内记住账号信息 (提示:为了您的信息安全,请不要在网吧或公用电脑上使用此功能!) 使用正则表达式验证账号密码是否符合条件 使用ajax在当前页面对与登录信息进行连接数据库的验证,验证登录的账号和密码是否正确 登录成功:用session来记录用户信息,跳转到学生个人菜单页面 登录失败:在本页面提示登录失败(用户名或密码错误) 然后就进入用户模块了 管理员登录页面: 登录信息:用户名、密码登录 使用正则表达式验证账号密码是否符合条件 使用ajax在当前页面对与登录信息进行连接数据库的验证,验证登录的账号和密码是否正确 登录成功:用session来记录用户信息,跳转到学生个人菜单页面 登录失败:在本页面提示登录失败(用户名或密码错误

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值