![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 76
vicwudi
这个作者很懒,什么都没留下…
展开
-
RecycleView探究(1)——实现瀑布流及问题
一、导包: compile 'com.android.support:recyclerview-v7:25.0.1'二、ReycleView使用步骤:1、在布局中使用RecycleViewRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h原创 2016-12-24 16:42:30 · 453 阅读 · 0 评论 -
设计模式——工厂模式
设计模式——工厂模式工厂模式和抽象工厂模式都属于创建型模式。 创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。简单工厂模式在简单工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 作用: + ...原创 2018-08-19 12:41:55 · 205 阅读 · 0 评论 -
Android触摸滑动全解(一)——View中触摸事件详解
Android触摸滑动全解(一)——View中触摸事件详解View触摸事件概述View中的触摸事件可以分为两个部分。dispatchTouchEvent()和onTouchEvent()这两个方法,其中,dispatchTouchEvent()是用来传递触摸事件(返回true表示消费此次触摸事件,返回false表示不消费此次触摸事件);onTouchEvent用来处理触摸事件。...原创 2018-08-26 21:39:31 · 3755 阅读 · 0 评论 -
Android触摸滑动全解(二)——ViewGroup中触摸事件详解
Android触摸滑动全解(二)——ViewGroup中触摸事件详解VieGroup触摸事件概述ViewGroup继承自View,很多方法都和View中一样,不同的是它重载了dispatchTouchEvent()方法,并且它多了一个自身的方法onInterceptTouchEvent()。ViewGroup触摸事件调用原则dispatchTouchEvent()中,会对...原创 2018-08-26 21:40:19 · 1118 阅读 · 0 评论 -
Android触摸滑动全解(三)——View坐标体系详解
Android触摸滑动全解(三)——View坐标体系详解当我们触摸屏幕上的View时,有时候想要获取此时View的一些属性状态,比如说在屏幕的坐标,或者相对于父布局的坐标,或者View的宽高等,但是由于View有很多属性,我们很苦恼不知道应该去选择哪个方法去调用,今天,我们就梳理一下View的坐标体系。一、屏幕区域划分Android系统的屏幕区域划分如图: 获取上述区域宽...原创 2018-08-26 21:41:07 · 1202 阅读 · 0 评论 -
Android触摸滑动全解(四)——MotionEvent详解
Android触摸滑动全解(四)——MotionEvent详解在分析View和ViewGroup的触摸事件时,我们已经接触到了MotionEvent类,它是用来存储我们当前手指移动的状态的,比如按下、移动、抬起等。其实这个类非常强大,还有许多其他功能,现在我们就来详细分析一下。一、事件坐标前面在《View坐标体系详解》中已经介绍过,View有许多获取它的位置的方法,比如getX()...原创 2018-08-26 21:42:09 · 9955 阅读 · 1 评论 -
WebView全面解析
WebView全面解析简介WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面。它使用的内核是webkit引擎,4.4版本之后,直接使用Chrome作为内置网页浏览器。作用显示和渲染网页;可与页面JavaScript交互,实现混合开发。使用介绍使用WebView之前,不要忘记在清单文件中声明访问网络权限:<uses...原创 2018-08-24 00:58:40 · 28534 阅读 · 0 评论 -
WebView与JavaScript的交互总结
WebView与JavaScript的交互总结1、交互总结WebView与JS之间的交互总结可以概括为下面两种:Android客户端去调用JS代码JS端去调用Android原生代码它们之间互相调用的桥梁是WebView。2、交互前准备2.1 Android客户端代码Activity:@Overrideprotected void onCreate...原创 2018-08-24 01:00:17 · 933 阅读 · 1 评论 -
Android中系统触摸相关辅助类总结
Android中系统触摸相关辅助类总结Android中的触摸事件,我们可以通过重写View的OnTouchEvent()等事件,通过事件类型MotionEvent来进行我们想要实现的逻辑操作,有时候一些简单的需求很容易实现,但是有时候,一些很困难的需求,我们需要编写大量的代码来实现。好在Android官方就给我们提供了很丰富的触摸相关的辅助类,今天,我就把我知道的分享给大家。1、Ges...原创 2018-08-25 15:11:31 · 2227 阅读 · 0 评论 -
Kotlin语法学习之Lambda
1.Lambda介绍Lambda表达式可以减少代码的复杂度,使代码看上去更加清爽,另外,Kotlin中有许多高阶函数,这些函数基本都是由Lambda表达式实现的,因此,学习Lambda表达式是十分有必要的。Kotlin中的Lambda表达式本质上底层是匿名函数实现的。2.Lambda语法2.1 表达式特点Lambda总是被{}包裹;若有参数,则在->左侧;若有函数体,则在-&...原创 2019-05-05 15:27:01 · 180 阅读 · 0 评论 -
Kotlin实战练习——自定义圆形图片三种实现方式
Kotlin实战练习——自定义圆形图片三种实现方式前言如今Kotlin越来越重要,本人也开始了Kotlin的学习。为了检测学习效果,加深学习印象,同时回顾一下以前的一些知识点,决定从写一个自定义圆形图片开始入手。圆形图片写法有很多,这里介绍最主要的三种方式,如果能掌握这三种方式,那么其他的自定义控件应该也都很好实现了。1. XferMode方式知识点1. 关于XferModeXfe...原创 2019-04-30 15:42:41 · 1028 阅读 · 0 评论 -
设计模式——工厂模式和抽象工厂模式
#Java设计模式——工厂模式工厂模式和抽象工厂模式都属于创建型模式。创建型模式这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。简单工厂模式在简单工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。作用:1、减少和复...原创 2019-04-30 15:47:58 · 155 阅读 · 0 评论 -
设计模式——状态模式
设计模式——状态模式在状态模式中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。优点: 减少复杂的逻辑判断,减少了条件分支语句。缺点: 代码量增加。使用场景:假设现在我要根据电梯的状态去开关电梯门,那么有哪些状态呢?电梯门完全关闭状态,此时可以手动打开;电梯门开启中,此时不能手动关闭也不能手动打开;电梯门关闭中,此时不能手动关闭(无意义),但是可以手动打开;电...原创 2019-04-30 15:49:45 · 417 阅读 · 0 评论 -
Android中AOP的实际运用
Android中AOP的实际运用一、AOP简介AOP即面向切面编程,区别于OOP(面向对象编程)的功能模块化,AOP主要侧重于解决某一类的问题。曾经我也不知道面向切面到底是切的谁,直到我看到下面这个图才理解。从上图可以看出,面向切面编程是在不影响原业务功能的情况下,将我们所需要的功能插入进原业务代码中。通俗的讲,比如在我们的android商城应用中,点击按钮跳转到功能界面时,很多地方都判...原创 2019-09-02 09:19:19 · 1303 阅读 · 0 评论 -
Android性能工具——Systrace使用
一、屏幕刷新机制基础概念在一个典型的显示系统中,一般包括CPU、GPU、display三个部分, CPU负责计算数据,把计算好数据交给GPU,GPU会对图形数据进行渲染,渲染好后放到buffer里存起来,然后display(有的文章也叫屏幕或者显示器)负责把buffer里的数据呈现到屏幕上。显示过程,简单的说就是CPU/GPU准备好数据,存入buffer,display每隔一段时间去buf...原创 2019-09-02 09:20:42 · 37336 阅读 · 9 评论 -
Google官方Android MVP架构Demo之单元测试
Google官方Android MVP架构Demo之单元测试Google在2016年推出了官方的Android MVP架构Demo,与此Demo相关的分析在网上有很多,但是关于单元测试的分析不是很多,而单元测试是我认为每一个应用开发中不可或缺的一部分,它不仅可以检测我们代码的健壮性,还能约束我们的开发习惯,让我们依循规范进行开发。Android环境下的单元测试,与传统意义上的单元测试存在差异,...原创 2019-09-02 09:21:24 · 796 阅读 · 0 评论 -
ConstraintLayout——约束性布局学习
ConstraintLayout简介Constraint Layout是Google在2016年的Google I/O大会上提出的一个可以灵活控制子控件的位置和大小的新布局。并且其号称可以实现布局最大程度的扁平化。ConstraintLayout优点我们知道项目中的布局嵌套问题对我们的项目性能有着不小的威胁。布局能实现扁平化的话会让软件性能得到很大的提升。所以我们在开发过程中都会尽...原创 2018-07-27 21:17:47 · 15720 阅读 · 1 评论 -
ListView中Checkbox选择混乱的三种解决方式
ListView中Checkbox选择混乱的三种解决方式问题描述ListView中checkbox点击混乱的问题,可采用如下三种较好的方式解决。先看错误代码public class MainActivity extends AppCompatActivity { private WebView wv; private Button btn; private...原创 2018-07-09 23:35:14 · 3563 阅读 · 1 评论 -
【第三方框架】Glid4.4 完全学习(未完待续)
一、添加方法: 导入Glide4.4的依赖: implementation 'com.github.bumptech.glide:glide:4.4.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0' 需要获取网络权限: 导原创 2017-12-22 21:05:37 · 592 阅读 · 0 评论 -
View子布局和父布局滑动冲突时的处理
当父布局和子布局的滑动发生逻辑冲突时,需要我们手动去判断该滑动事件应该交给谁处理,处理方法有:1、外部截断法: 释义:外部截断法是指点击事件先经过父容器的拦截处理,如果父容器需要处理此事件就进行拦截,不需要就不拦截。 使用方法:重写父容器的onInterceptTouchEvent方法,在内部做相应的拦截,自己做逻辑判断,返回true表示拦截点击事件传递,也就是父容器需要进原创 2016-12-24 19:35:54 · 3021 阅读 · 0 评论 -
Android中Service完全解析
1、作用: 执行不需要和用户交互而且需要长期运行的任务。(关键词:后台、长期运行)2、注意点: (1)Service默认运行在UI线程; (2)Service运行不依赖任何用户界面,任何界面的切换或者打开另一个应用程序均对它没有影响; (3)Service关闭时,若在Service中开启的子线程未结束,则关闭Service也不会结束其子线程;原创 2016-12-24 19:50:08 · 370 阅读 · 0 评论 -
Material Design学习之Toolbar
一、作用 ToolBar是用来取代ActionBar的控件,但是比ActionBar的功能更强大,更灵活。二、使用 1、添加v7 appcompat支持库。 compile 'com.android.support:design:25.0.1' 2、让Activity继承自AppCompatActivity。 3、去掉原有的导航栏原创 2016-12-25 11:26:20 · 291 阅读 · 0 评论 -
Android Studio快捷键
1、重写方法:Ctrl + Alt + space2、删除一行:Ctrl + X原创 2016-12-24 15:42:41 · 195 阅读 · 0 评论 -
Material Design学习之AppbarLayout
1、作用 类似于LinearLayout,默认是垂直布局。作用是1、将所有包裹的子View当成整个布局的Appbar;2、如果其他可以滚动的布局上下滑动时,Appbar里面包裹的内容如何处理。(可以跟着向上隐藏,也可以不动)2、使用 见代码:<android.support.design.widget.CoordinatorLayout xml原创 2016-12-25 12:32:45 · 223 阅读 · 0 评论 -
Material Design学习之CoordinatorLayout
1、作用 CoordinatorLayout的作用最主要的还是让子View之间能够进行互相通信(例如一个View移动或改变宽高之后,另一个View也跟着改变)。让它们实现通信的东西就是Behavior。2、使用 1、定义一个类继承CoordinatorLayout.Behavior,重写layoutDependsOn方法和onDependen原创 2016-12-26 22:16:53 · 228 阅读 · 0 评论 -
Material Design学习之DrawerLayout与NavigationView
一、作用DrawerLayout类似于第三方控件SlidingMenu,是一个侧滑抽屉菜单,支持从左边和右边滑出。NavigationView是适配DrawerLayout的控件,它包含头布局和menu布局。二、使用<android.support.v4.widget.DrawerLayout android:layout_width="match_parent"原创 2017-01-07 11:21:09 · 336 阅读 · 0 评论 -
Material Design学习之CollapsingToolbarLayout
1、作用 作为ToolBar的再封装,用于实现折叠、伸缩的效果。需要放在AppbarLayout中,并做为AppbarLayout的直接子类。2、使用<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"原创 2016-12-25 19:47:47 · 224 阅读 · 0 评论 -
Material Design学习之TabLayout
1、作用 配合ViewPager的切换显示。2、使用<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://s原创 2017-01-07 16:46:34 · 289 阅读 · 0 评论 -
Android中自定义View中的属性(慢慢补充)
一、Paintpaint.setPathEffect 给path设置效果//将path路径变得圆滑paint.setPathEffect(new CornerPathEffect(50))效果: //将路径变得离散,根据传入参数的不同而不同//效果1paint.setPathEffect(new DiscretePathEffect(3.0F, 5.0F));//效果二mPaint.s转载 2017-01-08 10:00:55 · 320 阅读 · 0 评论 -
自定义View探究-一个简单的垂直上拉下滑View
一、简介 最近朋友公司需要实现一个垂直上拉下滑的View,该View最初只有一部分显示在屏幕最下方,上拉那一部分可以将该View全部拉出来并全部显示在屏幕上,下滑该View可以将该View隐藏在屏幕下。 先看一下最终实现效果吧。 二、实现思路 1、这个效果其实有很多实现方法,为了让松手时有一个viewpager一样的缓慢滑动的效果我选择用原创 2017-01-21 12:49:26 · 1522 阅读 · 2 评论 -
Android-自定义圆角Dialog遇到的问题
一、自定义Dialg样式 layout.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="278dp" android:layout_height="107d原创 2017-01-22 22:59:33 · 407 阅读 · 0 评论 -
RxJava + Retrofit + OKHttp + RxLifecycle进一步封装网络
一、说明 RxJava和Retrofit的基本用法这里不再阐述,网络上有很多教程,这里只写进一步封装的过程,回顾一下我学习网络封装的知识。二、封装过程 1、先把接口的数据格式理清楚,一般返回的Json格式都是这样: { "code":200 "msg":"成功" "results":{[data]原创 2017-08-26 18:58:16 · 1873 阅读 · 5 评论 -
比较好的一些问题解决方案合集(待补充)。
一、夜间模式 http://www.jianshu.com/p/dcfcfcbda7ac原创 2017-03-23 22:43:27 · 421 阅读 · 0 评论 -
【自定义View】根据鸿洋思路仿写知乎滑动广告
一、先贴上鸿洋大神的网址: 点我传送二、所学所获 1.思路: 1、根据View在ListView或RecyclerView中的滑动,根据滑动的dY值显示ImageView的不同部分。 2、ImageView显示不同部分使用画布的translate方法进行。 2.学习知识点: (1) Im原创 2017-12-21 23:06:57 · 364 阅读 · 0 评论 -
我理解的MVVM架构及实战Demo
我理解的MVVM架构及实战Demo简介MVVM架构模式,即Model-View-ViewModel三个层级,MVVM模式出来的时间已经很长了,网上关于MVVM模式的解析也有很多,我这里只说一下我自己的理解,基本上是和MVP模式相比较的一个差异。先说一下MVVM中,我理解的各层的作用:Model: 数据处理层,用来存储数据和处理数据,这一层的作用和MVP中的Model层类似;Vie...原创 2019-09-06 10:20:09 · 3221 阅读 · 0 评论