开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

UINavigationController 自定义转场动画(模仿淘宝App跳转)

# 制作目的 * 想要自定义系统转场动画速度 * 放弃不顺畅的 NavigationBar 隐藏消失 * 干脆直接干掉每个页面的 NavigationBar,在使用 UINavigationController 管理的同时,每个页面的 NavigationBar 都使用自定...
laiguofeng 发布于 2天前 阅读 57

Swift官方文档闭包(Closure)部分翻译

> 最近在学习[RxSwift>>>](https://github.com/manofit/RxSwift),大量接触闭包的使用,趁着下班前,翻译了Swift官方文档中闭包那经常使用的一部分,当作复习。 ## 闭包表达式语法 Closure表达式语法具有以...
manofit 发布于 2天前 阅读 52

使用 Airtest 进行微信小程序自动化测试 (Android & iOS)

# 使用Airtest进行Android与iOS的微信小程序自动化测试 ## 1\. 简介 随着微信小程序的逐渐普及,针对微信小程序的测试需求也逐渐丰富起来了。现在针对小程序的自动化测试手段比较不完善,针对的平台比较具现化。 本文介绍一下使用Airtest测试框架进行微信小程序自动化测试的方法,并分别介绍在Android和iOS下对详细的使用步骤。 ## 2\. 需求 这里我们以星巴克的小程序为例 ![image](http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/_images/5_1.png) 我们需要 ``` 1.打开关闭小程序 2.查看咖啡信息并试图购买 ``` 针对这几个需求,我们使用Airtest对小程序进行测试 ## 3.Airtest简介 Airtest的简要介绍可以看这里 https://www.oschina.net/p/airtest http://airtest.netease.com/ 这次我们使用Airtest-Ide,poco,iOS-Tagent,这几个组件完成我们的任务,这些内容均可以在下面找到 https://github.com/AirtestProject ## 4.开始Android测试 这里使用系统WebView内核: 使用微信聊天框输入此网址打开 http://debugtbs.qq.com/ 或者扫描二维码 ![](https://oscimg.oschina.net/oscnet/66a08a54f941b35c4fab85aec3fd3c19970.jpg) 选择强制使用系统内核,然后重启微信即可...
刘欣_ 发布于 3天前 阅读 109 评论 3 点赞 2

Glide4.0 以后 监听Gif播放完成

在Glide3.0的时候,我们可以通过GifDecoder获取每一帧的播放时长然后相加得到gif的播放时长,即:   GifDrawable drawable = (GifDrawable) glideDrawable;  GifDecoder decoder = drawable.getDecoder();  long duration = 0;  for (int i = 0; i < drawable.getFrameCount(); i++) {          duration += decoder.getDelay(i); } 然后使用handle 发送一个延时消息,或者其它方法,等gif播放完成以后再做相应操作。 或者,通过重写GifDrawable,重写onStop()方法来处理:   public  class MyGifDrawable extends GifDrawable {         public MyGifDrawable (GifDrawable other) {             this(other, other.getFirstFrame(), other.getFrameTransformation());         }         @Override         public void stop() {             super.stop();             //GIF播放完成,可以做一些操作         }     } 但是到Glide4.0, GifDecoder 被声明为private,去掉了getDecoder()方法,第一种方法如果不使用反射,是无法做到的。 这时我们可以去重写GifDrawable,MyGifDr...
TCTW 发布于 4天前 阅读 239

BUG不断,黑马全在。百尺竿头,更进一球!

问:今年这是多少届的世界杯了? 答:第21届! 问:这是第几次开源众包做真正的现金抵用活动了?
开源中国众包平台 发布于 1周前 阅读 5333 评论 8 点赞 4

Flutter 项目实例 锤子、知乎文章阅读(容易上手)

闲着没事,撸了一个App.使用Flutter,开开始在网上找的一些例子太马虎,研究了官网和MicroSoftHub写完的。已经在Android 5和 IOS11.3上测试通过。安装我就不说了,放个外链吧
唐代de豆腐 发布于 2周前 阅读 652 点赞 1

Kotlin-高阶函数

  函数是一个类型,就像编程语言中的基本类型一样,就像Java中的引用类型一样,函数是函数类型。基本类型、引用类型、函数类型,说白了物理空间就是内存的一段区域,逻辑空间叫什么基本类型、引用类型、函数类型。基本类型就是int, float这种存储数据的,引用类型就是类呗,一个类在内存中不也是一段区域嘛,函数类型就是一段操作流程呗,一段操作流程在内存中不也是一段区域嘛。总之一样啦。猫是动物,狗是动物,人家棕熊也是动物啦,都在地球上占据一定的空间,不能把人家当成空气。       既然他们都是一种类型,那就要同等对待,既可以作为变量,也可以作为常量;既可以作为函数形参,也可以作为函数返回值。猫和狗能结婚生子,人家棕熊也可以,不可以把人家阉割了。物物平等。 fun add(a: Int, b: Int) : Int { return a + b } 上面这个棕熊,哦,不对,函数,上面这个函数的类型是啥? 不知道吧,我告诉你,是这个: (Int, Int) -> Int 惊不惊喜?咦,看不懂?回去补补lambda表达式去,老衲不负责给你补基础知识。哇咔咔! 好啦,既然函数有类型了,那我们用函数声明变量吧,它和用基本类型,用类声明变量是一样一样嘀。 var myfun : (Int, Int) -> Int ...
亭子happy 发布于 2周前 阅读 305 评论 7 点赞 1

Android studio NDK + CMake 编译SoundTouch实现wav格式音频的变速、变调功能

温馨提示: 本博客不是从零开始的文章,也不是什么高手精贴,只是一个菜鸡踩坑记录贴,建议懂得NDK+CMake流程的人观看,若是从零开始的,推荐先去看一下我之前跑的一个例子: 传送门在此:https://my.oschina.net/u/1462828/blog/1552937 本帖子只负责编译,具体的SoundTouch用法,还得另行专研。 目前来说的话,官方例子已经提供了setSpeed方法和setPitchSemiTones(参数是-12 到 12 )这两个方法,已经可以实现最简单的变速和变调了,本人亲测是可用的。更多的接口可参数,可以参考这个帖子: 传送门:https://blog.csdn.net/wkw1125/article/details/63807128 至于录音等实时操作的,网上随便下了一个demo,录音的时候居然崩了,估计是帖子太过久远,而我测试用的手机是8.0系统的,所以,目测这方面还有不少的坑,大家慢慢去踩吧。 帖子参考 https://blog.csdn.net/mazaiting/article/details/79708541 步骤1:下载 肯定是先下载SoundTouch了,直接去官网下最新(目前是2.0)的就好: 传送门:http://www.surina.net/soundtouch/sourcecode.html 步骤2:生成.h 复制一个SoundTouch.java并生成.h文件(详细步骤:自行百度,NDK生成.h文件) 我这里包名是com.touch,所以...
她叫我小渝 发布于 3周前 阅读 117

Glide咋就那么简单呢

头一次大言不惭地发文章,哈哈哈! 1、生命周期 别小看用Glide加载图片,人家Glide可是能绑定生命周期的,厉害了吧。人家和Activity绑定,生命周期就是Activity的生命周期,人家和Fragment绑定,生命周期就是Fragment的生命周期,人家和Application绑定,生命周期就是Application的生命周期。咋地,不服啊,我粘上谁就和谁的生命周期一致。好吧,又一个变色龙。  看啥看,没见过啊。我这是为了节省内存,千年大计! 想想也是,就把Activity比作一架飞机吧,Activity运行周期是这架飞机从北京起飞,飞到上海。你说Activity都onDestroy了,就是这架飞机已经抵达上海了,你这乘客还赖在飞机上不走,你这不浪费人民的资源么。 2、图片数据加载 巧妇难为无米之炊,让我展示图片,我得有图片数据啊。甭管从网络获取图片数据,还是本地磁盘获取图片数据,还是内存获取图片数据,总得有个地方获取,并将数据给我吧。什么?获取个数据还要一边做一边问我?要你何用? 嗯,把图片数据直接给我,这叫封装,面向对象的三大基本特征之一,懂么? 3、图片展现及信息回调 我都有数据了,是不是得展现出来啊。得开个发布会啊,这是产品宣传的好时机。有图片直接上图片(ImageView)。什么?...
亭子happy 发布于 3周前 阅读 348 点赞 1

Andromeda:首个适用于多进程架构的组件通信框架

引言 其实Android的组件化由来已久,而且已经有了一些不错的方案,特别是在页面跳转这方面,比如阿里的ARouter, 天猫的统跳协议, Airbnb的DeepLinkDispatch, 借助注解来完成页面的注册,从而很巧妙地实现了路由跳转。 但是,尽管像ARouter等方案其实也支持接口的路由,然而令人遗憾的是只支持单进程的接口路由。 而目前爱奇艺App中,由于复杂的业务场景,导致既有单进程的通信需求,也有跨进程的通信需求,并且还要支持跨进程通信中的Callback调用,以及全局的事件总线。 那能不能设计一个方案,做到满足以上需求呢? 这就是Andromeda的诞生背景,在确定了以上需求之后,分析论证了很多方案,最终选择了目前的这个方案,在满足要求的同时,还做到了整个进程间通信的阻塞式调用,从而避免了非常ugly的异步连接代码<!--more-->。 Andromeda的功能 Andromeda目前已经开源,开源地址为开源地址为https://gitee.com/bettar/Andromeda. 由于页面跳转已经有完整而成熟的方案,所以Andromeda就不再做页面路由的功能了。目前Andromeda主要包含以下功能: 本地服务路由,注册本地服务是registerLocalService(Class, Object), 获取本地服务是getLocalService(Class); 远程服务路由,注册...
bettar 发布于 4周前 阅读 364 评论 2

含有JNI的SDK通过proguard混淆加密

### 一、背景 写完SDK,还有JNI的加密,还要加密第三方的JNI,头疼 ### 二、科普知识点(关于混淆含有JNI代码的注意事项) 1、绝对不能混淆含有JNI的代码,例如 native 修饰的方法 2、看情况,如果在做到1的情况下,还出现找不到类(ClassNotFound)或者方法的情况,不混淆JNI代码里面使用的实体类或者一些方法 **对于上述2点的解释**:假如你混淆了JNI代码块,那么在调用的时候,因为混淆了,是找不到对应的native方法或者对应的JNI的类的,所以才会出现找不到类或者方法的情况。 ### 三、操作步骤 1、首先打开proguard(android的sdk里面有:sdk\tools\proguard\bin,这个路径) 2、准备好对应的混淆加密配置文件proguard.txt和要混淆加密的jar(加密详见这篇[android打包SDK具体操作](https://my.oschina.net/grkj/blog/1813354)) ``` #导入的要混淆的jar包的名字叫做 printer.jar -injars printer.jar #在当前目录下导出混淆加密的jar的名字叫做 printPro.jar -outjars 'printerPro.jar' -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -verbose -dontoptimize -dontpreverify #下面是保留的一些组件,例如annotation,activity等等 -keepattributes *A...
jack__0023 发布于 1个月前 阅读 171

灭霸一个响指,开源众包出现在开源中国的社区APP里,一键接单从此无忧。

开源众包在开源中国社区APP上线啦。不用电脑也可以随时接单。
开源中国众包平台 发布于 1个月前 阅读 475 评论 1

渐进式Web应用(PWA)入门教程(上)

最近关于渐进式Web应用有好多讨论,有一些人还在质疑渐进式Web应用是否就是移动端未来。 但在这篇文章中我并不会将渐进式APP和原生的APP进行比较,但有一点是可以肯定的,这两种APP的目标都是使用户体验变得更好。 移动端Web应用有很多优秀的概念让人应接不暇,但好在编写一个渐进式Web应用不是一个很困难的事情。在这篇文章里将向你介绍如何把一个普通的网站转换成渐进式Web应用。你可以按照这篇文章一步一步地做,做完之后你的网站将可以实现离线访问,并且可以在桌面上创建该网站的图标。那么下面即将开始入门教程。 什么是渐进式Web应用? 渐进式Web应用是一种全新的Web技术,让Web应用和原生APP的体验相近或一致。 渐进式Web应用它可以横跨Web技术及Native APP开发的解决方案,对于开发者的优势如下: 你只需要关心W3C的Web标准,不用关心各种Native APP的代码。 用户可以在安装应用之前先试用。 在渐进式Web应用中,你不需要使用各种应用商店来分发应用,也不用关心应用发布时奇怪的审核标准以及应用内购的平台抽成。另外,应用程序更新是自动进行的,无需用户交互,所以整体的使用体验对于用户来讲更为的平滑。 渐进式Web应用的“安装”过程很快,只需要在主屏幕上添...
葡萄城控件技术团队 发布于 1个月前 阅读 1476 评论 2

开源一款基于MVVM设计模式的开源看小说软件

基于 LifeCycle+ViewModel+LiveData+kotlin协程 的MVVM设计模式的,开源看小说软件。
xiaolei123 发布于 1个月前 阅读 424 评论 2 点赞 1

]iOS逆向实践记录-让非6s机型在SpringBoard拥有3DTouch

首先先给我这困难的语言表达能力道个歉哈,真的尽力了。 最近才接触不久的逆向工程,刷夜,爆肝,把《iOS应用逆向工程》这本书的工具,全部看了一遍,并且尝试了一遍,感觉需要点什么。 那就是实践!  最近6s手机出了3DTouch,无奈手中没有这款机型,恰好最近对逆向小有心得,又听说过已经有插件能实现同样的需求,证明确实有可行性,于是开动。根据点击的判断和出现,初步感觉,这应该不需要多少行代码就能搞定,应该只要添加一个手势,或者是更改一个手势的点击事件,让系统认为发生了3DTouch点击事件,就可以了。 在这里我还是要推荐下我自己建的iOS开发学习群:680565220,群里都是学ios开发的,如果你正在学习ios ,小编欢迎你加入,今天分享的这个案例已经上传到群文件,大家都是软件开发党,不定期分享干货(只有iOS软件开发相关的),包括我自己整理的一份2018最新的iOS进阶资料和高级开发教程 所需工具: cycript,openSSH,class-dump 测试环境:iOS9.0.2,iPhone5s 备注:因为自身没有3DTouch,所以需要下载一个插件,让机器拥有3DTouch功能,我使用的是forcy,通过覆盖长按手势,实现 通过查阅官方文档,得到关键词  Shortcut Menu peek pop 这个词将来就...
iOS开发火邑 发布于 1个月前 阅读 116 点赞 1

一次性比较目前前端最流行的状态管理,mobx,vuex,redux-saga使用方式用方式

一次性比较目前前端最流行的状态管理,mobx,vuex,redux-saga使用方式用方式,只介绍我在具体项目中的使用方式,不介绍使用原理.
前端大白 发布于 1个月前 阅读 201

ShaderLab开发实战——Cg语言简介

上文中介绍了Shader相关基础概念,想了解的读者可通过ShaderLab开发实战——Shader基本概念查看。 文章最后还剩一个问题没有介绍,就是Shader编程语言Cg(C for graphics),本文将介绍Cg的相关知识点。 本文主要介绍两个问题,第一,为什么要使用Cg开发Shader,第二,Cg语言入门知识和学习资料。 1. 为什么要使用Cg开发Shader     在Shader基本概念文章中已经介绍了,目前Shader的实现语言一共有三种,微软提供的HLSL(High Level Shading Language),OpenGL提供的GLSL(OpenGL Shading Language)以及NIVIDIA联合提供的Cg(C for graphics)。在Cg出现之前,HLSL和GLSL占据了整个Shader开发市场。随着NIVIDIA的GeForce系列显卡的崛起,其推出的Cg语言取得了巨大的成功。Cg语言是可以被OpenGL和DirectX广泛支持的图形处理器编程语言,属于OpenGL和DirectX的上层语言。可以说使用Cg编程的Shader可以在OpenGL和DirectX环境上运行,良好的跨平台性给开发者提供较大便利。另外Cg语言的易学性也是其一大优势,设计者的初衷也是想将Shader编程想C语言一样方便,当然还有一个重要原因是Unity3D中ShaderLab的编写使用了Cg语言。基于以上原因,Cg语言不断受到Shader开发者的青睐...
丛力夫 发布于 1个月前 阅读 37

移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”

本系列文章引用了腾讯技术专家樊华恒《海量之道系列文章之弱联网优化》的部分章节,感谢原作者。 1、前言 随着移动互联网的高速发展,移动端IM以移动网络作为物理通信载体早已深入人心,这其中的成功者就包括微信、手机QQ、支付宝(从即时通讯产品的角度来看,支付宝已经算的上是半个IM了)等等,也为移动端即时通讯开发者带来了各种可以参考的标杆功能和理念:语音对讲、具有移动端体验特性的图片消息、全时在线的概念、真正突破物理体验的实时通知等。 上述IM产品、功能和概念,在开发者间讨论时,无一例外都会被打上“移动端”这个特性,从网络通信的角度来说,这个特性的本质可以认为就是移动网络的特性。 以文件发送为例,传统的PC端IM(可以简单地理解为传统有线网络上的IM)可以直接实时点对点发送(理论上无需经过服务器中转)。 但在移动端IM里我们并不能这么干,原因是: 1)3G/4G/5G网络下P2P成功率并没有那么高(因为是对称型NAT,详见《通俗易懂:快速理解P2P技术中的NAT穿透原理》); 2)移动网络的信号跳变、抖动很难预测(甚至在你转身的瞬间,信号可能会立马由强变弱); 3)移动网络的延迟、丢包、重传等导致通信体验很差(就像从国内访问国外的网站那种...
JackJiang- 发布于 1个月前 阅读 130

Android DNS更新与DNS-Prefetch

Android DNS缓存更新与DNS-Prefetch
IamOkay 发布于 1个月前 阅读 185 评论 1 点赞 1

View.animate()动画ViewPropertyAnimator原理解析

你知道还可以直接一行代码 view.animate().scaleX(1.0f).scaleY(1.0f) 实现多种组合动画效果么 Q1:动画基本可以分为 Animator 和 Animation 两大类,而 View.animate() 返回的是一个 ViewPropertyAnimator 类型的对象,这个类并没有继承自任何类,那么它实现动画的原理又是什么呢?单从命名上看好像是通过 Animator 实现,那么真的是这样么?
请叫我大苏 发布于 1个月前 阅读 123

java高级程序员如何写好简历,一份优秀的程序员简历是什么样的?

马上就要到一年一度,最适合找工作的时间段:金三银四。另外一个时间段是:金九银十。金三银四的大意是:最好的时间是三月,其次是四月。同理于金九银十,最好的时间是九月,其次是十月。反正我也是在几年前,道听...
颖伙虫 发布于 10小时前

Unity Excel 文件读取和写入

在网上看到很多Unity 的解析Excel 的文章,其中最经典的一篇莫过于雨凇Momo的Unity3D研究院之MAC&Windows跨平台解析Excel(六十五) 但是在使用的过程中还是碰到了不少的问题,在这里总结一下,希望能对看到此处的朋友一个帮助。 Excel的读取, 需要加入库文件 Excel.dll 和ICSharpCode.SharpZipLib库文件,官方链接 http://exceldatareader.codeplex.com/ [csharp] view plain copy using Excel; using System.Data; Excel文件读取和转换List格式 [csharp] view plain copy public class ExcelAccess { public static string ExcelName = "Book.xlsx"; public static string[] SheetNames = { "sheet1", "sheet2", "sheet3", "sheet4" }; public static List SelectMenuTable(int tableId) { DataRowCollection collect = ExcelAccess.ReadExcel(SheetNames[tableId - 1]); List menuArray = new List(); for (int i = 1; i < collect.Count; i++) { if (collect[i][1].ToString() == "") continue; Menu menu = new Menu(); menu.m_Id = collect[i][0].ToString(); menu.m_level = collect[i][1].ToString(); menu...
NickHomeSelf 发布于 2周前 阅读 3

Hbuilder 链接手机调试配置IOS和Android

一、安卓手机调试: 1、下载并安装夜神模拟器 https://www.yeshen.com/ 2、进入夜神模拟器     注:才打开的时候默认的是宽屏平板模式,需要经过以下设置改为手机模式     1)简单的界面认识          2)进入是是平板模式,需要改成手机模式      3、进入Hbuilder     1)菜单栏上点击: 工具  -> 选项  进入以下页面将端口改为62001(因为夜神模拟器的端口是62001):     2)点击Hbuilder面板图标             (1)图标1处点击可看到链接成功面板             (2)图标2处点击Hbuilder基座运行,或者快捷键Ctrl + R 运行,此处图标3处可看到链接成功消息便会在模拟器上安装你需要测试的应用了 end____到目前为止安卓的调试到此为止   二、IOS手机调试: 注:因为iphone 不支持windows系统下的模拟器,可以使用mac电脑下载模拟器进行调试,或者在windows上使用真机调试。 需要:下载itunes、一根数据线、一台iphone 1、下载并安装Itunes 2、链接好设备便会出现如下图所示(此图是上面的图,偷个懒),直接点击基座运行:...
AnyLiem 发布于 1周前 阅读 11

关于使用AlarmManager的注意事项

最近在做一个需求:客户端按照规定的时间间隔向服务端发送定位。一看到这个需求就想到了使用 AlarmManager 来实现。 AlarmManager 经常被用来执行定时任务,比如设置闹铃、发送心跳包等。也许有人会有疑问:为什么不能使用相同具有定时效果的 Timer 和 Handler 呢? 其实答案非常简单,相对于 Handler 来说,使用 sendEmptyMessageDelayed 方法是依赖于 Handler 所在的线程的,如果线程结束,就起不到定时任务的效果;而 AlarmManager 依赖的是 Android 系统的服务,具备唤醒机制。比起 Handler 也就更合适了。 而至于 Timer 可以精确地做到定时操作,但是相比于 AlarmManager 而言还是差了一截。同理,如果手机关屏后长时间不使用, CPU 就会进入休眠模式。这个使用如果使用 Timer 来执行定时任务就会失败,因为 Timer 无法唤醒 CPU 。 所以,综上所述,AlarmManager 就成为了最佳选择。 SDK API < 19 一般情况下,使用 AlarmManager 来执行重复定时任务的代码如下所示: alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), TIME_INTERVAL, pendingIntent); 或者 alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, S...
hejunbinlan 发布于 1周前 阅读 13

「华为云」云中优选惠,全场低至2折,6.19-6.30开抢,签到抽P20

华为云年中钜惠,注册抽免费高配(2核4G)云服务器,单人成团2折起抢购热销云产品;云服务器、数据库、安全防护、大数据等150+云产品,更有精彩好礼送不停!
华为云

Android 7.0 Launcher3 去掉应用抽屉

年初做过一个项目,有一个需求就是需要将桌面变为单层不需要二级菜单。最近几次有小伙伴有这个问我这个解决办法。现在我将分享给大家。 先上效果图: 功能分解 去除Allapp键,调整HotSeat布局 将所有应用摆在launcher第一层 去掉长按时删除选项 解决方案 一,设置总开关 按照6.0 Launcher3 的模式,添加一个开关,控制是否去掉抽屉。 LauncherAppState类:单例模式,主要在启动的时候用,他初始化了一些对象,并且注册了广播监听器和ContentObserver。为了能灵活切换模式,在此类中添加静态开关。 Launcher3\src\com\android\launcher3\LauncherAppState.java: public static boolean isDisableAllApps() { // Returns false on non-dogfood builds. return false; } 二,Allapp键的加载 在HotSeat里面去掉Allapp键的加载 ,屏蔽isAllAppsButtonRank()占用allapp位置。 1) 不再占用allapp位置 2) 在加载Workspace时,会留出HotSeat的第三个位置给allapp按钮,若不取消该位置的占用,在HotSeat加载时会留出空位。HotSeat的初始化在HotSeat.java中 Launcher3\src\com\android\launcher3\HotSeat.java –>isAllAppsButtonRank(): public boolean isAllApps...
恒源祥 发布于 2个月前 阅读 44

合并两个排序的链表

  题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。   例:链表一:1 -> 3 -> 5 -> 7   链表二:2 -> 4 -> 6 -> 8  合并后:1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8    思路:先判断两个链表是否是空,如果是则直接返回另一个链表。若都不为空,则从两个链表的第一个结点开始进行比较,将小的取出来,然后移到下一个结点继续递归操作。   测试用例:   1.功能测试   2.特殊测试:NULL、一个结点 #include<cstdio> #include<iostream> using namespace std; struct ListNode { int m_nValue; ListNode* m_pNext; }; //创建结点 ListNode* CreateListNode(int value) { ListNode* pNode = new ListNode(); pNode->m_nValue = value; pNode->m_pNext = NULL; return pNode; } //连接结点 void ConnectListNodes(ListNode* pCurrent, ListNode* pNext) { if (pCurrent == NULL) { cout << "连接错误" << endl; return; } pCurrent->m_pNext = pNext; } //打印链表 void PrintList(ListNode* pHead) { ListNode* pNode = pHead; whi...
无精疯 发布于 2个月前 阅读 19

认识一下Android里的Context

在Android平台上,Context是一个基本的概念,它在逻辑上表示一个运行期的“上下文”。 其实何止是Android平台,在其他平台上,一样有上下文的概念,比如一个进程,其实也是个上下文。我们在编写最简单的C语言程序时,凭什么写一句简单的malloc()就可以申请到内存,写一句简单的open()就可以打开一个文件?这些难道都是从天上掉下来的吗?当然不是。说穿了在进入main()函数之前,操作系统就已经为我们创建好了一个上下文,我们只是享受了上下文给我们提供的便利而已。
悠然红茶 发布于 2个月前 阅读 71 点赞 1

C++中free与delete的区别

  首先free对应的是malloc;delete对应的是new;free用来释放malloc出来的动态内存,delete用来释放new出来的动态内存空间。   new和delete是C++的操作符,而malloc和free是C中的函数。   new做两件事,一是分配内存,而是调用类的构造函数;同样delete会调用类的析构函数和释放内存。而malloc和free只是分配和释放内存。
无精疯 发布于 2个月前 阅读 17

android 蓝牙

#### 通过反射调用判断蓝牙是否已连接(反射不一定能成功) ``` Method isConnectedMethod = BluetoothDevice.class.getDeclaredMethod("isConnected", (Class[]) null); isConnectedMethod.setAccessible(true); boolean isConnected = (boolean) isConnectedMethod.invoke(bluetoothDevice, (Object[]) null); ``` #### 通过接口获取已连接的蓝牙。(有sdk level 限制)。 ``` if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { Context c = context; BluetoothManager bm = (BluetoothManager)c.getSystemService(Context.BLUETOOTH_SERVICE); connectedBLEDevices = bm.getConnectedDevices(BluetoothProfile.GATT); } ```...
zdglf 发布于 1个月前 阅读 10

视频和音频开源项目

                                       视频和音频开源项目 1.简介:Android上基于FFmpeg开发的视频处理框架,简单易用,体积小,帮助使用者快速实现视频处理功能。包含以下功能:剪辑,裁剪,旋转,镜像,合并,分离,变速,添加LOGO,添加滤镜,添加背景音乐,加速减速视频,倒放音视频。 https://github.com/yangjie10930 2.简介:USB摄像头(UVC)视频录制和图片抓拍,支持边推流边录像 https://github.com/jiangdongguo/AndroidUSBCamera
android-key 发布于 1个月前 阅读 22

Float保留两位小数或多位小数

方法1: // float i = 34.33333; //四舍五入,只显示小数点后两位 BigDecimal b = new BigDecimal(i); float f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue(); mToLearnTimes.setText("已选课程:"+ f1+"小时"); // b.setScale(2, BigDecimal.ROUND_HALF_UP) 表明四舍五入,保留两位小数 方法2:   float scale = 34.236323; DecimalFormat fnum = new DecimalFormat("##0.00"); String dd=fnum.format(scale); 方法3: float a = 123.2334f; float b = (float)(Math.round(a*100))/100;(这里的100就是2位小数点,如果要其它位,如4位,这里两个100改成10000)...
王先森oO 发布于 1个月前 阅读 4

[Micropython][ ESP8266] TPYBoard V202之Network

实验目的 学习在PC机系统中网络(network)的使用方法。 学习TPYBoard V202连接网络的使用。 2.准备工作   所需元器件 TPYBoard V202一块 数据线一条 电脑 1台(本次实验以win7为例)所需软件 ESPlorer(3)下载地址 :http://www.tpyboard.com/download/tool/169.htmlNetwork库的使用方法网络模块用于配置WiFi连接。一共两种模式,模式一,是tpyboardv202当sta节点,即连接路由器的节点。模式二,是tpyboardv202做为ap,充当路由。使用以下命令创建这些对象的实例:(1)当ESP8266连接到路由器时: import network wlan = network.WLAN(network.STA_IF)      # 创建一个站(当ESP8266连接到路由器时)接口 wlan.active(True)                          # 激活接口 wlan.scan()                                 # 扫描接入点 wlan.isconnected()                         # 检查站点是否连接到路由器 wlan.connect('essid', 'password')        # 连接到路由器 wlan.config('mac')      # 获取接口的MAC地址 wlan.ifconfig()         # 获取接口的IP / netmask / gw / DNS地址 检查是否连接是...
bodasisiter 发布于 3周前 阅读 10

亚马逊下架一款智能玩具,几维安全提醒智能终端安全不容忽视

据美国“侨报网”6月6日报道,亚马逊(Amazon )5日表示,他们已经开始从网店下架一款名为CloudPets的智能玩具,原因是来自莫齐拉公司(Mozilla)的研究人员发现该玩具存在安全漏洞,并及时将这一消息传递给了亚马逊。上周,沃尔玛和塔吉特(Target)也停止销售了这款玩具。 莫齐拉公司宣传副总裁博伊德(Ashley Boyd)在一份声明中说:“在一个数据泄露越来越普遍的世界里,像CloudPets这样的产品仍然摆放在商店货架上,让人越发担心孩子们的隐私和安全。” 据报道,CloudPets由Spiral Toys玩具公司生产,是一款通过蓝牙连接在线应用程序并可以进行语音记录的会话智能玩具。2017年起,黑客开始侵入包含儿童电子邮件地址、密码和语音记录的CloudPets数据库,并利用窃取的数据信息进行敲诈勒索,涉及的用户超过80万。 因此,莫齐拉公司与网络安全研究公司CUR53合作,调查了 CloudPets在2017年初数据泄露事件后仍有哪些技术漏洞。结果显示, CloudPets的蓝牙也存在漏洞,且这一缺陷已存在一年多时间。 Spiral Toys玩具公司对此事件并未做出回应。研究人员在报告中写道:“该公司显然对于他们用户的安全和隐私被侵犯并不关心,并未认真看待善意的攻击报告,因此使用户面临着进一步受到...
工作的事 发布于 2周前 阅读 6

BUG不断,黑马全在。百尺竿头,更进一球!

问:今年这是多少届的世界杯了? 答:第21届! 问:这是第几次开源众包做真正的现金抵用活动了?
开源中国众包平台 发布于 1周前 阅读 5333 评论 8 点赞 4

Flutter 项目实例 锤子、知乎文章阅读(容易上手)

闲着没事,撸了一个App.使用Flutter,开开始在网上找的一些例子太马虎,研究了官网和MicroSoftHub写完的。已经在Android 5和 IOS11.3上测试通过。安装我就不说了,放个外链吧
唐代de豆腐 发布于 2周前 阅读 652 点赞 1

UINavigationController 自定义转场动画(模仿淘宝App跳转)

# 制作目的 * 想要自定义系统转场动画速度 * 放弃不顺畅的 NavigationBar 隐藏消失 * 干脆直接干掉每个页面的 NavigationBar,在使用 UINavigationController 管理的同时,每个页面的 NavigationBar 都使用自定...
laiguofeng 发布于 2天前 阅读 57

关于 iOS 上的 PWA 应用,你需要知道些什么?

原文:Progressive Web Apps on iOS are here 作者:Maximiliano Firtman 在 iOS 11.3 版本中,苹果公司悄悄地增加了基于“渐进增强 Web 应用程序”(Progressive Web Apps,PWA)概念的新技术。本文带你看看 PWA 是如何工作的?它的能力和挑战是什么?以及如果你有已发布的 PWA 应用,那么你需要知道些什么。  这就是一个 PWA 应用,它能在 iPad 上全屏展示,并且具有离线功能,它也与 App Store 中的其它本地应用程序一样会出现在 iPad Dock 中 PWA 还没有一个确切的定义,总的来说,它是使用某种不需要打包或签名的 Web 技术创造出来的应用程序,可以离线运行,并且可以在运行的系统中选择性安装,它不论是从外观还是执行效果来看,都与一般应用程序无异。 PWA 应用在大多数平台上都不需要经过 App Store 流程,目前只有 Edge/Windows 10 强制 PAW 应用入驻商店。 也就是说在 iOS 平台上,你可以在没有 App Store 授权的情况下安装 PWA 应用。这可能是苹果公司一直没有向用户介绍这个新功能的原因之一,他们甚至都没有在 Safari 发布这个技术的公告,也许他们不想让用户产生疑惑。  你能指出 Google 地图原生应用和 PWA 版本的区别吗 谁创造了 PWA ? 其实,P...
编辑部的故事 发布于 2个月前 阅读 2940 评论 2 点赞 2

最详细的Android P版本刘海屏适配指南来了

Android P预览版增加了很多亮点新特性,其中最接地气、最直观的改变当属适配了类似于华为P20的顶部凹槽屏幕设计这一项,俗称刘海屏。 在开发者模式中,Android P系统将调整通知栏的设计来适配此种屏幕,新的APIs也将允许开发者决定通知消息的展示形式。 随着各大手机厂商挤入“刘海屏”手机发布的潮流,Android P版本的此特性,能够让各大应用厂商充分利用独特的屏幕来进行应用设计。 那么如何让你的应用快速适配刘海屏呢?本文为你提供最详细的解读指南。
华为终端开放实验室 发布于 3个月前 阅读 2733

解决微信web开发工具(当前系统不是安全代理,是否信任?)

       想进行微信小程序开发,但是将安装好的软件打开却提示我“当前系统不是安全代理,是否信任?”。what??还有这种操作的吗,不解决这个问题,根本就无法进行开发。然后我百度了一个晚上,按照晚上的方法还是无法解决。弄了好久都没得,我索性就放弃,打两把游戏去了。        我是那么容易放弃的人?那是不可能滴,第二天一大早就起来把这个问题给解决了。好像废话有点多了哦。下面直接上我是这么解决的吧 电脑版本:win7 旗舰版 1:首先先将代理设置为“不使用任何代理,勾选后直连网络”; 2:然后把防火墙关掉; 3:关机重启即可。
uug 发布于 2个月前 阅读 548

使用 Airtest 进行微信小程序自动化测试 (Android & iOS)

# 使用Airtest进行Android与iOS的微信小程序自动化测试 ## 1\. 简介 随着微信小程序的逐渐普及,针对微信小程序的测试需求也逐渐丰富起来了。现在针对小程序的自动化测试手段比较不完善,针对的平台比较具现化。 本文介绍一下使用Airtest测试框架进行微信小程序自动化测试的方法,并分别介绍在Android和iOS下对详细的使用步骤。 ## 2\. 需求 这里我们以星巴克的小程序为例 ![image](http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/_images/5_1.png) 我们需要 ``` 1.打开关闭小程序 2.查看咖啡信息并试图购买 ``` 针对这几个需求,我们使用Airtest对小程序进行测试 ## 3.Airtest简介 Airtest的简要介绍可以看这里 https://www.oschina.net/p/airtest http://airtest.netease.com/ 这次我们使用Airtest-Ide,poco,iOS-Tagent,这几个组件完成我们的任务,这些内容均可以在下面找到 https://github.com/AirtestProject ## 4.开始Android测试 这里使用系统WebView内核: 使用微信聊天框输入此网址打开 http://debugtbs.qq.com/ 或者扫描二维码 ![](https://oscimg.oschina.net/oscnet/66a08a54f941b35c4fab85aec3fd3c19970.jpg) 选择强制使用系统内核,然后重启微信即可...
刘欣_ 发布于 3天前 阅读 109 评论 3 点赞 2

BUG不断,黑马全在。百尺竿头,更进一球!

问:今年这是多少届的世界杯了? 答:第21届! 问:这是第几次开源众包做真正的现金抵用活动了?
开源中国众包平台 发布于 1周前 阅读 5333 评论 8 点赞 4

Flutter 项目实例 锤子、知乎文章阅读(容易上手)

闲着没事,撸了一个App.使用Flutter,开开始在网上找的一些例子太马虎,研究了官网和MicroSoftHub写完的。已经在Android 5和 IOS11.3上测试通过。安装我就不说了,放个外链吧
唐代de豆腐 发布于 2周前 阅读 652 点赞 1

Dubbo注册到发布执行流程(原理)

前言: 本文章为个人笔记,参考Dubbo官方文档,加上自己的理解,所总结的Dubbo注册到发布的执行流程(也可以说Dubbo原理),中间涉及到的技术,如果感兴趣,请自行搜索; Dubbo架构:      从图上可以看出,Dubbo共分十层:Service(服务层),Config(配置层),Proxy(服务代理层),Registry(中间注册层),Cluster(集群层,包含集群容错和软负载均衡,服务降级),Monitor(监控层),Protocol(远程调用层),Exchange(信息交换层),Tranesport(网络传输层,默认Dubbo协议,基于TCP[NIO],长连接),Serialize(数据序列层,Dubbo自己开发的尚未成熟序列化方式不建议使用,推荐开源Hession、ProtoBuf等) Dubbo执行流程 1,加载配置文件,解析配置文件     1.1)基于dubbo.jar内的Meta-inf/spring.handlers配置,spring在遇到dubbo名称空间时,会回调DubboNamespaceHandler类。 (Config【配置层】)     1.2)所有的dubbo标签,都统一用DubboBeanDefinitionParser进行解析,基于一对一属性映射,将XML标签解析为Bean对象。 (Config【配置层】)     1.3)根据配置文件生产代理对象(Proxy【服务代理层】)     1.4)封装服务地址的注册与发现(reg...
yokol 发布于 3个月前 阅读 1196

Glide4.0 以后 监听Gif播放完成

在Glide3.0的时候,我们可以通过GifDecoder获取每一帧的播放时长然后相加得到gif的播放时长,即:   GifDrawable drawable = (GifDrawable) glideDrawable;  GifDecoder decoder = drawable.getDecoder();  long duration = 0;  for (int i = 0; i < drawable.getFrameCount(); i++) {          duration += decoder.getDelay(i); } 然后使用handle 发送一个延时消息,或者其它方法,等gif播放完成以后再做相应操作。 或者,通过重写GifDrawable,重写onStop()方法来处理:   public  class MyGifDrawable extends GifDrawable {         public MyGifDrawable (GifDrawable other) {             this(other, other.getFirstFrame(), other.getFrameTransformation());         }         @Override         public void stop() {             super.stop();             //GIF播放完成,可以做一些操作         }     } 但是到Glide4.0, GifDecoder 被声明为private,去掉了getDecoder()方法,第一种方法如果不使用反射,是无法做到的。 这时我们可以去重写GifDrawable,MyGifDr...
TCTW 发布于 4天前 阅读 239

关于 iOS 上的 PWA 应用,你需要知道些什么?

原文:Progressive Web Apps on iOS are here 作者:Maximiliano Firtman 在 iOS 11.3 版本中,苹果公司悄悄地增加了基于“渐进增强 Web 应用程序”(Progressive Web Apps,PWA)概念的新技术。本文带你看看 PWA 是如何工作的?它的能力和挑战是什么?以及如果你有已发布的 PWA 应用,那么你需要知道些什么。  这就是一个 PWA 应用,它能在 iPad 上全屏展示,并且具有离线功能,它也与 App Store 中的其它本地应用程序一样会出现在 iPad Dock 中 PWA 还没有一个确切的定义,总的来说,它是使用某种不需要打包或签名的 Web 技术创造出来的应用程序,可以离线运行,并且可以在运行的系统中选择性安装,它不论是从外观还是执行效果来看,都与一般应用程序无异。 PWA 应用在大多数平台上都不需要经过 App Store 流程,目前只有 Edge/Windows 10 强制 PAW 应用入驻商店。 也就是说在 iOS 平台上,你可以在没有 App Store 授权的情况下安装 PWA 应用。这可能是苹果公司一直没有向用户介绍这个新功能的原因之一,他们甚至都没有在 Safari 发布这个技术的公告,也许他们不想让用户产生疑惑。  你能指出 Google 地图原生应用和 PWA 版本的区别吗 谁创造了 PWA ? 其实,P...
编辑部的故事 发布于 2个月前 阅读 2940 评论 2 点赞 2

最详细的Android P版本刘海屏适配指南来了

Android P预览版增加了很多亮点新特性,其中最接地气、最直观的改变当属适配了类似于华为P20的顶部凹槽屏幕设计这一项,俗称刘海屏。 在开发者模式中,Android P系统将调整通知栏的设计来适配此种屏幕,新的APIs也将允许开发者决定通知消息的展示形式。 随着各大手机厂商挤入“刘海屏”手机发布的潮流,Android P版本的此特性,能够让各大应用厂商充分利用独特的屏幕来进行应用设计。 那么如何让你的应用快速适配刘海屏呢?本文为你提供最详细的解读指南。
华为终端开放实验室 发布于 3个月前 阅读 2733

使用 Airtest 进行微信小程序自动化测试 (Android & iOS)

# 使用Airtest进行Android与iOS的微信小程序自动化测试 ## 1\. 简介 随着微信小程序的逐渐普及,针对微信小程序的测试需求也逐渐丰富起来了。现在针对小程序的自动化测试手段比较不完善,针对的平台比较具现化。 本文介绍一下使用Airtest测试框架进行微信小程序自动化测试的方法,并分别介绍在Android和iOS下对详细的使用步骤。 ## 2\. 需求 这里我们以星巴克的小程序为例 ![image](http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/_images/5_1.png) 我们需要 ``` 1.打开关闭小程序 2.查看咖啡信息并试图购买 ``` 针对这几个需求,我们使用Airtest对小程序进行测试 ## 3.Airtest简介 Airtest的简要介绍可以看这里 https://www.oschina.net/p/airtest http://airtest.netease.com/ 这次我们使用Airtest-Ide,poco,iOS-Tagent,这几个组件完成我们的任务,这些内容均可以在下面找到 https://github.com/AirtestProject ## 4.开始Android测试 这里使用系统WebView内核: 使用微信聊天框输入此网址打开 http://debugtbs.qq.com/ 或者扫描二维码 ![](https://oscimg.oschina.net/oscnet/66a08a54f941b35c4fab85aec3fd3c19970.jpg) 选择强制使用系统内核,然后重启微信即可...
刘欣_ 发布于 3天前 阅读 109 评论 3 点赞 2

解决微信web开发工具(当前系统不是安全代理,是否信任?)

       想进行微信小程序开发,但是将安装好的软件打开却提示我“当前系统不是安全代理,是否信任?”。what??还有这种操作的吗,不解决这个问题,根本就无法进行开发。然后我百度了一个晚上,按照晚上的方法还是无法解决。弄了好久都没得,我索性就放弃,打两把游戏去了。        我是那么容易放弃的人?那是不可能滴,第二天一大早就起来把这个问题给解决了。好像废话有点多了哦。下面直接上我是这么解决的吧 电脑版本:win7 旗舰版 1:首先先将代理设置为“不使用任何代理,勾选后直连网络”; 2:然后把防火墙关掉; 3:关机重启即可。
uug 发布于 2个月前 阅读 548

VUE+Axios请求加安全级别(加密、签名、时间戳)与java服务端解析

应项目要求,需要在http请求中添加安全级别,根据需要对api接口参数做加密、签名、时间戳等。做这些我是拒绝的,都知道在前端做加密没啥用。 下面贴上对应代码。 一、前端 封装加密工具,这个是引用了crypto.js,通过npm安装 npm i --save crypto-js /** * 通过crypto-js实现 加解密工具 * AES、HASH(MD5、SHA256)、base64 * @author: ldy */ import CryptoJS from 'crypto-js'; const KP = { key: '1234567812345678', // 秘钥 16*n: iv: '1234567812345678' // 偏移量 }; function getAesString(data, key, iv) { // 加密 key = CryptoJS.enc.Utf8.parse(key); // alert(key); iv = CryptoJS.enc.Utf8.parse(iv); let encrypted = CryptoJS.AES.encrypt(data, key, { iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return encrypted.toString(); // 返回的是base64格式的密文 } function getDAesString(encrypted, key, iv) { // 解密 key = CryptoJS.enc.Utf8.parse(key); iv = CryptoJS.enc.Utf8.parse(iv); let decrypted = CryptoJS.AES.decrypt(enc...
lindeyi 发布于 1个月前 阅读 314 点赞 1

Swift官方文档闭包(Closure)部分翻译

> 最近在学习[RxSwift>>>](https://github.com/manofit/RxSwift),大量接触闭包的使用,趁着下班前,翻译了Swift官方文档中闭包那经常使用的一部分,当作复习。 ## 闭包表达式语法 Closure表达式语法具有以...
manofit 发布于 2天前 阅读 52

前台Service通知栏进度更新, 解决Android O (8.0) Notification不显示问题

1.通知栏常驻, 确保Service为前台进程, 防止服务被杀死 2.使用标准的通知栏样式 notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); @Override public int onStartCommand(Intent intent, int flags, int startId) { LogUtil.d(TAG, "onStartCommand"); final Integer notificationID = 100; //Set notification information: final NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getApplicationContext(), NOTIFICATION_CHANNEL); notificationBuilder.setOngoing(true) .setSmallIcon(R.drawable.ic_launcher_round) .setContentTitle("小米视频") .setContentText("甄嬛传,老男孩等下载中") .setProgress(100, 0, false); //Send the notification: final Notification notification = notificationBuilder.build(); startForeground(notificationID, notification); UIThread.uiPost(new Runnable() { @Override public void run() { if (progress == 100) { ...
SuShine 发布于 2个月前 阅读 140

如何在微信小程序中使用async/await

1.引入generator支撑库 经过Babel转译后的代码,会把aysnc/await的功能通过类似co库的方式来实现,即要使用到generator,所以,和我们使用co的时候一样,需要依赖一个regeneratorRuntime,才能支持generator特性。我们可以使用Facebook开源的regenerator库。你可以通过npm来下载这个regenerator库: npm install regenerator --save 然后将下载文件中名为regenerator-runtime的文件拿出来,放到我们的小程序代码中去。 2.引入代码 在需要使用async/await特性的代码文件中,引入regenerator库: import regeneratorRuntime from '../../utils/regenerator-runtime/runtime-module.js'; 然后,你就可以放心的在你的代码里使用async/await来写异步处理了。
i5--lou 发布于 2个月前 阅读 149

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。  
颖伙虫 发布于 2天前 阅读 34

UINavigationController 自定义转场动画(模仿淘宝App跳转)

# 制作目的 * 想要自定义系统转场动画速度 * 放弃不顺畅的 NavigationBar 隐藏消失 * 干脆直接干掉每个页面的 NavigationBar,在使用 UINavigationController 管理的同时,每个页面的 NavigationBar 都使用自定...
laiguofeng 发布于 2天前 阅读 57

flutter移动开发中的页面跳转和传值

在安卓原生开发中,页面跳转可以用Intent类来具体实现: Intent intent =new Intent(MainActivity.this,second.class); startActivity(intent); 而在安卓开发中,页面传值有多种方法,常见的可以用intent、Bundle、自定义类、静态变量等等来传值,甚至可以用SharedPreferences来保存键值对等数据。 在Flutter中,页面跳转和传值也具有相应的方法,只不过方式更加符合目前的技术潮流标准。 具体的实现的是:final Map<String, WidgetBuilder> routes;  根据Flutter的文档,routes的灵感来源于reactjs,routes可以翻译为路由,可以看到这种routes的思路在目前的设计中彼此借鉴,routes的思路不仅在前端流行,比如在vue、reactjs、Angular中用到,而且在后端应用中也非常成熟。 一:在flutter中实现页面的跳转的代码: import 'package:flutter/material.dart'; void main() { runApp(new MaterialApp( title: '页面跳转', home: new FirstScreen(), )); } class FirstScreen extends StatelessWidget { @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text('第一个页面'), ...
大洋的顶端 发布于 2个月前 阅读 252 点赞 1

jeesite 快速开发平台 初体验

http://www.jeesite.com/ GitHub:https://github.com/thinkgem/jeesite 开源中国:http://git.oschina.net/thinkgem/jeesite 更多文档 https://github.com/thinkgem/jeesite/tree/master/doc 导入实践 1.创建jeesite数据库,导入sql \jeesite-master\db\jeesite_mysql.sql 2.导入maven工程 导入时保持联网状态,maven需要下载依赖 3.修改配置文件jeesite.xml 关于数据库的配置 4.在tomcat上运行 5.使用超级管理员登录 http://localhost:8080/jeesite/a/login 最高管理员默认账号:thinkgem 密码:admin  
晨猫 发布于 1个月前 阅读 65

iOS “项目名” has conflicting provisioning settings.

发布程序的时候,提示 :   "项目名 "  is automatically signed for development, but a conflicting code signing identity iPhone Distribution has been manually specified. Set the code signing identity value to "iPhone Developer" in the build settings editor, or switch to manual signing in the project editor. 这是怎么回事呢? 因为我用的是xcode 7.1 beta 版, 这版的build Setting 如图: 我用的是这个。下面的,都是iOS Develper 而 7.3.1非beta版的build Setting 如下图: 少了  而且,根据提示,你需要在project 选项下的build Setting里面设置 code Setting 呵呵呵。。。   //---------------------2016.09.23----------------------  (特别提醒:这种问题大部分是你的证书问题,遇到后请先检查你的发布证书和配置文件,不要像我一样,最后才发现是配置文件失效引起的) 后来我再次遇到了这个问题,重新做了发布证书,发现: 1:如果在 TARGETS 中的general 中 对其取消勾选 然后在非atomic 模式下自己选择文件是可以编译的 2:如果是在atomic 模式下,下边这种状态也是可以编辑的 (关于code signing 等的描述可以参考 https://developer...
壹峰 发布于 3周前 阅读 48

Execution failed for task ':app:processDebugResources'. No slave process to process jobs, aborting

        今天写项目遇到这个问题:               Execution failed for task ':app:processDebugResources'. No slave process to process jobs, aborting           解决办法:         clean和rebuild如果都没有成功,直接点击 File>Invalidate Caches/Restart后编译,重新打开studio就好
pig-haoyue 发布于 2个月前 阅读 222

Spring MVC Controller使用HttpServletRequest

Controller代码 package com.imooc.mvcdemo.controller; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.builder.ReflectionToStringBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody...
颖伙虫 发布于 3天前 阅读 20

ionic3确认密码验证

我现在在做的项目是由前一个同事完成的,他也工作没多久,似乎没有重用的意识,我收拾一些遗留问题和改产品和线上线下真是巨痛苦,由于同事嫌麻烦,ionic版注册根本没做,直接导向到电脑版了,这次我要封装app,注册就轮到我来实现了 才接触ionic没多久,这次要做个注册功能,对ionic3的表单和验证知之甚少,只好一个个从表单布局开始找例子,折腾了几个小时,界面算是完成 验证部分也是磕磕绊绊,用户名,邮箱,密码用自带的Validators搞定了,到了验证重复密码出了问题,自带的没有,网上一搜,倒是有教程,是扩展自定义指令的,匆匆一看,好像有点长啊,怪不得同事说麻烦 我自己其实也是不想麻烦,在适当的地方偷懒才是好程序员的,心里想了想,这个重复密码验证目前只会用到一次,以后最多是修改密码改功能多一次,再加上目前时间不是很宽松,就干脆自己用别的简单方法解决 思考和调试一番之后算是得到了似乎还可以的结果,过程略去,我就直接上代码吧 ts文件 首先要导入FormBuilder,Validators,FormGroup import {FormBuilder,Validators,FormGroup} from "@angular/forms"; 在class里写上 RegisterForm: FormGroup; name: any; email:any; password:...
gcudwork 发布于 2个月前 阅读 147

问答网站已成过去,深度问答社区才是当下

曾几何时,各类问答网站数不胜数,从百度知道这类综合型问答网站到各种垂直细分的问答网站,都有不少,但到了移动互联网时代,很明显的一大趋势是,网站整体的流量都在下滑,随着移动智能设备的普及,越来越多的用...
ThinkSNS账号 发布于 15小时前

Android平台架构(ART)

Android平台架构(ART) 本文目的:准确表述Android平台架构 本文转载自[Android官网] 本文定位:学习笔记 学习过程记录,加深理解。也希望能给学习的同学一些灵感 本文更新时间:2018.06.22(阅读请注意时效) 平台...
lichuangnk 发布于 15小时前

linux phtread periority

1.Unix线程优先级有三种 1,SCHED_OTHER 分时调度,一个进程在这个时间段内运行,下一个时间段 运行另一个进程 2.SCHED_FIFO 实时调度,那个线程优先强用cpu资源则一直占用,知道使用完毕释放或者更高优先级的线程...
青春无极限 发布于 16小时前

AFNetworking流程相关

flag flag flag! 之前大概看了一下,没做总结,发现忘记了,立一个flag,慢慢填坑! 1.先把afn的作者的图贴上来,我在慢慢分析 2.之前没注意到这个: 额。。。SSL还有单元测试,,,这框架,实在是6啊 此处种草...
RainOrz 发布于 16小时前

tableView cell的高度 分组头部尾部的高度 自适应

@property (nonatomic) CGFloat rowHeight; // default is UITableViewAutomaticDimension @property (nonatomic) CGFloat sectionHeaderHeight; // default is UITableViewAutomaticDimension @...
娜一片蓝色星海 发布于 17小时前

安卓巴士Android开发者门户

一、开源库 1.SimpleRatingBar 简单好用的ratingbar 2.NumberRain Android自定义控件仿黑客帝国数字雨 3.CacheWebView 突破系统WebView缓存的空间限制的WebView 4.luckly_popup_window Android开发使用PupopWind...
迷你芊宝宝 发布于 18小时前

云栖科技评论第58期:身处“四大”时代

【卷首语】身处“四大”时代   我们正身处“四大”时代。这“四大”并非“四大会计师事务所”,也非老子在《道德经》中说的“故道大,天大,地大,人亦大”,而是“大科学、大技术、大产业、大交叉”。   这是...
迷你芊宝宝 发布于 18小时前

无需绑定设备,教你下载google play 上的某个APK

访问 https://apps.evozi.com/apk-downloader/ 进入该网站后,输入google play 的apk 所在详情页面地址,如 https://play.google.com/store/apps/details?id=com.xxx ,然后就能直接下载啦。 上述网站如果无法访问...
xiaogg 发布于 18小时前

android studio打包

https://blog.csdn.net/yy1300326388/article/details/48344411
pig-haoyue 发布于 18小时前

android studio设置Tab为四空格缩进, 并显示tab

其实很简单: 左上角File—Setting–Editor–Code Style–Java 显示tab 在左侧选择,”Editor“-”Apperance",如图:
SuShine 发布于 18小时前

C#调用Java方法(详细实例)

阅读目录 C#调用c++ C#调用JAVA方法 C#可以直接引用C++的DLL和转换JAVA写好的程序。最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具体例子把一个JAVA方法转换成可以由C#直接调用的DLL 回到目录 ...
壹峰 发布于 18小时前

HTML5中meta属性的使用详解

meta属性在HTML中占据了很重要的位置。如:针对搜索引擎的SEO,文档的字符编码,设置刷新缓存等。虽然一些网页可能没有使用meta,但是作为正规军,我们还是有必要了解一些meta的属性,并且能够熟练使用它们。 声明...
guorongjin 发布于 22小时前

OAuth 2.0 协议原理与实现:token 生成策略

OAuth2.0 协议定义了授权详细流程,并最终以 token 的形式作为用户授权的凭证下发给客户端,客户端后续可以带着 token 去请求资源服务器,获取 token 权限范围内的用户资源。 对于 token 的描述,OAuth 2.0 协议只...
hejunbinlan 发布于 22小时前

理解OAuth 2.0

OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。 一、应用场景 为了理...
hejunbinlan 发布于 22小时前

html中submit和button的区别(总结)

submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了。 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成button,即取消其自动提交的行为,...
临江仙卜算子 发布于 23小时前 阅读 3

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/android-studio-ide-145.32...
Yao--靠自己 发布于 1天前 阅读 4

android studio 新建或者导入项目时缓慢或卡死的问题

先说一下碰到的问题,最近要换一个电脑开发,电脑上环境都已经配好就直接down下来项目导入,发现在Building的时特别慢,之前从github上下载的项目也会出现这种情况,等的是心力交瘁。 为了解决这个问题花了将近一...
Yao--靠自己 发布于 1天前

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotations InnerClass annot...
切切歆语 发布于 1天前 阅读 2

Android之Dalvik、ART、JIT、AOT

Android之Dalvik、ART、JIT、AOT 本文内容:Dalvik、ART、JIT、AOT之间关系 本文定位:知识记录 学习过程记录,加深理解,提升文字组合表达能力。也希望能给学习的同学一些灵感 本文整理于[此文] JIT与Dalvik JI...
lichuangnk 发布于 2天前 阅读 4

UINavigationController 自定义转场动画(模仿淘宝App跳转)

# 制作目的 * 想要自定义系统转场动画速度 * 放弃不顺畅的 NavigationBar 隐藏消失 * 干脆直接干掉每个页面的 NavigationBar,在使用 UINavigationController 管理的同时,每个页面的 NavigationBar 都使用自定...
laiguofeng 发布于 2天前 阅读 57

渐进式Web应用(PWA)入门教程(上)

最近关于渐进式Web应用有好多讨论,有一些人还在质疑渐进式Web应用是否就是移动端未来。 但在这篇文章中我并不会将渐进式APP和原生的APP进行比较,但有一点是可以肯定的,这两种APP的目标都是使用户体验变得更好。 移动端Web应用有很多优秀的概念让人应接不暇,但好在编写一个渐进式Web应用不是一个很困难的事情。在这篇文章里将向你介绍如何把一个普通的网站转换成渐进式Web应用。你可以按照这篇文章一步一步地做,做完之后你的网站将可以实现离线访问,并且可以在桌面上创建该网站的图标。那么下面即将开始入门教程。 什么是渐进式Web应用? 渐进式Web应用是一种全新的Web技术,让Web应用和原生APP的体验相近或一致。 渐进式Web应用它可以横跨Web技术及Native APP开发的解决方案,对于开发者的优势如下: 你只需要关心W3C的Web标准,不用关心各种Native APP的代码。 用户可以在安装应用之前先试用。 在渐进式Web应用中,你不需要使用各种应用商店来分发应用,也不用关心应用发布时奇怪的审核标准以及应用内购的平台抽成。另外,应用程序更新是自动进行的,无需用户交互,所以整体的使用体验对于用户来讲更为的平滑。 渐进式Web应用的“安装”过程很快,只需要在主屏幕上添...
葡萄城控件技术团队 发布于 1个月前 阅读 1476 评论 2

Shell入门看我吧

shell入门的文章,对shell不太熟悉小伙伴可以看看
aron1992 发布于 3个月前 阅读 2879 评论 6 点赞 9

Flutter 初尝:从 Java 无缝过渡

# 准备阶段 ## 下载 Flutter SDK 新建 Flutter 文件夹,克隆 Flutter SDK: ```bash git clone -b beta https://github.com/flutter/flutter.git ``` ## 配置 Flutter 环境 我是 Mac 系统,Flutter SDK 下载完后的路径:Users/wuxiaolong/Flutter/flutter/ 。 ### 在命令行下,进入用户目录 ```bash cd $HOME ``` ### 打开.bash_profile文件 执行命令打开文件: ```bash open -e .bash_profile ``` 打开文件后,添加 Flutter SDK 安装的路径: ```bash export PATH=${PATH}:/Users/wuxiaolong/Flutter/flutter/bin:$PATH ``` ### 更新刚配置的环境变量 ```bash source .bash_profile ``` ### 验证 终端直接输入 flutter,没有提示该命令找不到,则配置成功。 ## flutter doctor 命令行输入`flutter doctor`,安装 Futter 剩余依赖项。 ## 安装 Flutter 和 Dart 插件 启动 Android Studio,搜索 Flutter 插件并单击 install,系统提示您安装 Dart 插件,点击 Yes 安装即可。 **提示**:安装 Dart 插件可能会提示下载失败,多试几次。 ## 第一个项目 Android Studio - File - New - New Flutter Project,等待创建成功后,运行效果如下: ![](http://7q5c2h.com1.z0.glb.clou...
吴小龙同學 发布于 3个月前 阅读 3473 评论 11 点赞 4

微信团队原创分享:iOS版微信的内存监控系统技术实践

微信自15年年底上线FOOM上报,每天FOOM次数与登录用户数比例接近3%,同期crash率1%不到。而16年年初某东老大反馈微信频繁闪退,接着16年8月不少外部用户反馈微信启动不久后闪退,分析大量日志还是不能找到FOOM原因。微信急需一个有效的内存监控工具来发现问题。
JackJiang- 发布于 4个月前 阅读 2986 评论 2 点赞 4

「华为云」云中优选惠,全场低至2折,6.19-6.30开抢,签到抽P20

华为云年中钜惠,注册抽免费高配(2核4G)云服务器,单人成团2折起抢购热销云产品;云服务器、数据库、安全防护、大数据等150+云产品,更有精彩好礼送不停!
华为云

腾讯技术分享:社交网络图片的带宽压缩技术演进之路

为了进一步降低运营带宽成本,减小用户访问流量及提升页面加载速度,社交网络 CDN运维紧跟行业图片优化趋势,创新引入WebP、SharpP、自适应分辨率、Guetzli等图像压缩技术到现网,经过三年多的多部门联合攻关,已逐渐形成一套覆盖全图片类型(JPEG、JPG、PNG、WebP、GIF)多场景的图片压缩运营体系,适用于各类型终端,每年节约外网带宽几百G。
JackJiang- 发布于 5个月前 阅读 4245 评论 7 点赞 6

App框架实现———dagger2

该框架的组成 MVP+Dagger2+RxJava+Retrofit+OkHttp+RxCache+单元测试(Junit+Mockito)
jiahongfei 发布于 6个月前 阅读 1036 评论 2

Kotlin Primer·第七章·协程库(上篇)

本篇只讲了协程库的使用。还有中篇讲协程的启动和切换实现原理,下篇核心讲解kotlin协程在JVM层的实现原理。 这可能是至今为止最详细实用的 Kotlin 协程库详解了。
kymjs张涛 发布于 7个月前 阅读 1549

Android计步模块优化(今日步数)

最近在项目中研究计步模块,主要功能记录当天步数,类似微信运动,支付宝计步,咕咚今日步数。 [本篇文章简书地址](http://www.jianshu.com/p/cfc2a200e46d)
jiahongfei 发布于 8个月前 阅读 1246 评论 5 点赞 2

React前后端同构防止重复渲染

首先解释React前后端同构、React首屏渲染的概念。然后通过这2个概念解决服务端渲染完成后浏览器端重复渲染的问题。
随风溜达的向日葵 发布于 10个月前 阅读 1859 评论 2 点赞 2

kotlin协程简单封装,助你一臂之力

简述 经过两天的学习历程,看遍了国内的经典博客,也看完了官方的文档。下面推荐大家阅读 好的文章: 开始使用Kotlin协程 官方: kotlinx.coroutines 如果英文够好,推荐看官网的,例子比较全面。 本项目源码地址 计划 学习过后,为了更进一步,特地封装一些常用API,以便其他新手学习使用。接下来将完成下面一个个计划功能 1.  顺序执行 task1,task2 2. 并发执行 task1,task2 3. 等待执行 task2 需等待 task1执行完毕后执行 4. 延迟执行 task1 需要10秒之后执行 5. 心跳执行 异步任务按指定间隔执行 Task  6. 任务执行感知生命周期,可以跟随当前activity的生命周期结束而自动结束,并可以配置是否在重新打开activity时是否要重新执行 7. 任务执行可选主线程还是子线程 8. 任务执行可以选择 需要网络或者不需要网络 9. 任务执行可以选择网络制式4G 或者wifi下执行(5.0以上特性) 10.任务可以选择在充电时执行(5.0以上特性) 11. 任务执行可以随时取消,可以取消所有当前任务 目前框架已经做到前7项计划,后续将逐渐完善。 代码演示 1. 顺序执行代码 代码 效果 顺序执行效果图 2. 并发执行 并且分别延迟1秒,3秒 代码 效果 并发效果图 3. 等待执行 代码 效果 等待效果...
zb1500427248653 发布于 10个月前 阅读 1663 点赞 1

浅谈Hybrid

Android web开发入门篇
Android小闹 发布于 11个月前 阅读 2236 评论 4 点赞 6

Android 桌面加载图标过程分析

### 桌面应用图标流程 #### 前言 本人工作上碰到这么一个需求,开发一款滤镜引擎,将桌面上所有的图标进行统一的滤镜化,这就需要了解一下整个桌面去取图标的过程,了解了整个过程,找到真正拿图标的地方,在真正取图标的地方将图片进行替换,或者滤镜化,之前分析情况,现在整理下,与大家分享。**本文所用的代码,是基于Android 5.1** #### 桌面组件介绍 ![一级页面](https://static.oschina.net/uploads/img/201707/25114347_zV1r.png "一级页面") - 一级菜单 - **WorkSpace**:他是一个ViewGroup,要想在桌面上显示东西,就得往这个ViewGroup里添加自己的View - **BubbleTextView**:他是一个TextView,上方是图标,下方是名称,在桌面上的图标都是由这个类表示 - **FolderIcon**:他也是一个ViewGroup,用来表示桌面上的文件夹图标,里面添加了缩略处理过的bitmap,他的背景图片就是文件夹的形状 - **HotSeat**: 他是个FrameLayout,是桌面下方的固定快捷区,包含了几个常用的图标,中间的AllApp按钮是固定位置,也是一个TextView ![抽屉桌面](https://static.oschina.net/uploads/img/201707/25114317_XbLg.png "抽屉桌面") - 抽屉页面 组件 - **PagedView**:他是一...
蔡小鹏 发布于 11个月前 阅读 1794 评论 8 点赞 4

关于线程,还有这些是你需要知道的!

在日常开发中,线程常常被用作为提升程序效率的重要手段。在CoorChice的这篇文章中,CoorChice介绍了线程的基本运作。
CoorChice 发布于 12个月前 阅读 4500 评论 26 点赞 18

你知道Thread线程是如何运作的吗?

我们在Android开发过程中,几乎都离不开线程。但是你对线程的了解有多少呢?它完美运&#...
CoorChice 发布于 1年前 阅读 4875 评论 26 点赞 17

使用MediaCodec和RTMP做直播推流

本项目完全开源 项目Github地址:[AndroidInstantVideo](https://github.com/ChillingVan/AndroidInstantVideo) 码云地址:[AndroidInstantVideo](http://git.oschina.net/ChillingVan/AndroidInstantVideo) 目前开源的项目或市面上的Android直播客户端主要是用ffmpeg来实现推流的。本文将介绍使用Android原生的视频编码类MediaCodec实现直播推流。 ### 数据流及大致原理 这里所说的直播,就是将你的客户端产生的视频数据,实时发送到服务器上。服务器上的数据再实时地发送到播放客户端上。 * 以视频数据为例: **获取Camera画面** 首先是摄像头拍摄得到原始画面数据,这里原始画面数据的格式我们不用管,因为我们使用的是MediaCodec,所以我们会使用 camera.setPreviewTexture(surfaceTexture) 来利用Camera获取到的画面。 此处的原理可忽略,大致说明的话,就是Camera会把获得的画面保存为OpenGL的一个纹理,我们使用这个纹理就能使用Camera的画面。 **绘制画面** 在获得画面之后,我们要把这个画面(纹理)“画”到MediaCodec上。 如何画? MediaCodec提供一张’白纸’,也就是一个Surface,供我们把纹理画到上面。此处的API是 MediaCodec.createInputSurface() 怎么画?...
量子 发布于 1年前 阅读 2639 评论 25 点赞 5

OC对象之旅 weak弱引用实现分析

# Runtime学习 -- `weak`应用源码学习 >   Runtime源码分析,带你了解OC实现过程。其中参考了大量的大神的代码以及文献,里面也有个人的见解,欢迎拍砖,欢迎交流。 ## 两种常见使用场景 ```Objective-C /// weak属性 @interface XX : XX @property(nonatomic,weak) Type* weakPtr; @end /// 代码块中使用 { /// 使用__weak __weak Type* weakPtr = [[SomeObject alloc] init]; } ``` 根据调试信息,发现两者的区别是: - 第一种进入到 `id objc_storeWeak(id *location, id newObj)方法` ``` /** * This function stores a new value into a __weak variable. It would * be used anywhere a __weak variable is the target of an assignment. * * @param location The address of the weak pointer itself * @param newObj The new object this weak ptr should now point to * * @return \e newObj */ id objc_storeWeak(id *location, id newObj) { return storeWeak (location, (objc_object *)newObj); } ``` - 第二种绕一个远路,先初始化 `id objc_initWeak(id *location, id newObj)` ``` Objective-C /** * Initialize a fresh weak pointer to some object l...
瞎折腾 发布于 1年前 阅读 895

用两张图告诉你,为什么你的App会卡顿?

![Cover](http://upload-images.jianshu.io/upload_images/1869462-e45f4cf10981b323.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 有什么料? 从这篇文章中你能获得这些料: - 知道setContentView()之后发生了什么? - 知道Android究竟是如何在屏幕上显示我们期望的画面的? - 对Android的视图架构有整体把握。 - 学会从根源处分析画面卡顿的原因。 - 掌握如何编写一个流畅的App的技巧。 - 从源码中学习Android的细想。 - 收获两张自制图,帮助你理解Android的视图架构。 ![link](http://upload-images.jianshu.io/upload_images/1869462-59ab533d5276864e.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 从setContentView()说起 ``` public class AnalyzeViewFrameworkActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_analyze_view_framwork); } } ``` 上面这段代码想必Androider们大都已经不能再熟悉的更多了。但是你知道这样写了之后发生什么了吗?这个布局到底被添加到哪了?我的天,知识点来了! 可能很多同学也知...
CoorChice 发布于 1年前 阅读 6789 评论 44 点赞 26 打赏 1

Android 的滑动分析以及各种实现

一、滑动效果的产生     滑动一个View,本质区别就是移动一个View。改变当前View所在的坐标,原理和动画相似不断改变坐标位置实现。实现View的滑动就必须监听滑动的事件,并且根据事件传入的坐标,动态且不断改变View的坐标,从而实现View跟随用户触摸的滑动而滑动。 (1)、Android的坐标系         Android中将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向,如下图:          系统提供了getLocationOnScreen(int location[])这样的方法来获取Android坐标系中点的位置,即该视图左上角在Android坐标系中的坐标。在触控事件中使用getRawX()、getRawY()方法所获得的坐标同样是Android坐标系中的坐标。  (2)、视图坐标系     Android中除了上面所说的这种坐标系之外,还有一个视图坐标系,它描述了子视图在父视图中的位置关系。这两种坐标系并不矛盾也不复杂,他们的作用是相互相成的。与Android坐标系类似,视图坐标系同样是以原点向右为X轴正方向,以原点向下为Y轴正方向,只不过在视图坐标系中,原点不再是Android坐标系中的屏幕最左上角,而是以父视图左上角为坐标原点,如下图:     在触控...
MrXI 发布于 1年前 阅读 1836 评论 7 点赞 3

Android基础夯实--你了解Handler有多少?

万丈高楼平地起,学习任何东西我们都离不开扎实的基础知识。本编文章通过对Handler相关知识的全面回顾,给Android开发者重新夯实基础。
Ryane 发布于 1年前 阅读 2092 评论 8 点赞 2

Service Worker:让网页无网络也能访问

想要开发一个 PWA(Progressive Web App)应用,你必须知道首先知道,Service Worker 是什么,他是怎么工作的。
kymjs张涛 发布于 1年前 阅读 2850 评论 7 点赞 2
顶部