细说Android动画
动画感觉说白了就是一句话
在触发范围内 循环的修改view特点后 使view重新绘制 展示新的效果
所以只要有满足三个条件就能完成一个效果
触发范围
比如给个时间 在范围内做个事,或者是给个滑动距离 手指在范围内跟随滑动做个事。
继续阅读 »
我们的项目包含图片编辑功能,特别是包含图片添加水印贴纸的功能,从最初的简单版可以添加一个图片并且移动位置,到现在添加的图片可以进行移动,以及缩放,旋转,已经是和其他的图片处理可以达到一样的很好的效果了。一直想要整理一下,分享一下实现的改进过程,一直没空,也由于我过于懒,没有动笔。今天正好有时间,分享一下。
more
原始阶段:直接添加ImageView,并且设置其在父view中的位置
父视图为RelativeLayout,贴纸view就是一个ImageView,通过设置topMargin和leftMargin来设置在父视图中显示的位置,不支持缩放和旋转。功能快速实现,代码比较冗余。再有了新的需求不方便扩展。
新阶段:自定义Vi
继续阅读 »
当涉及到耗时的任务时,要用到进度条提示,也就是工作者线程和UI主线程的交互问题。
Andriod提供了几种在其他线程中访问UI线程的方法。
Activity.runOnUiThread( Runnable )
View.post( Runnable )
View.postDelayed( Runnable, long )
下面给出两个例子分别用handler和runOnUiThread访问UI主线程。
1、使用handler,普通进度条控件
TextView tvShowMessage;
Message message=null;
Handler handler = new Handler() {
public
继续阅读 »
学习和使用 Kotlin 来开发安卓已经有一段时间了, 总体来说, 我还是很喜欢 kotlin 这个语言的,
比 java 用起来感觉轻便很多, 特别是支持 lambda, 委托, 隐式类型转换, 让代码显得特别的精炼.
最主要的是 kotlin 很大程度避免了 java 里面的空指针异常, 而且可以和 java 自由混合.
用 Kotlin 来开发 Android 也极好的, 因为 Kotlin 支持 Java 6+ :)
可以看一下 java 和 kotlin 的语言对比:
```java
// java
view.setOnClickListener(new View.OnClickListener() {
继续阅读 »
RecyclerView 已经推出了一年多了,日常开发中也已经彻底从 ListView 迁移到了 RecyclerView,但前两天有人在一个安卓群里面问了个关于最顶上的 item view 加蒙层的问题,被人用 ItemDecoration 完美解决。此时我发现自己对 RecyclerView 的使用一直太过基本,更深入更强大的功能完全没有涉及,像 ItemDecoration, ItemAnimator, SmoothScroller, OnItemTouchListener, LayoutManager 之类,以及 RecyclerView 重用 view 的原理。网上也有很多对 RecyclerView 使用的讲解博客,要么
继续阅读 »
npm的常用命令
npm install xxx 安装模块
npm install xxx@1.1.1 安装1.1.1版本的xxx
npm install xxx -g 将模块安装到全局环境中。
npm ls 查看安装的模块及依赖
npm ls -g 查看全局安装的模块及依赖
npm uninstall xxx (-g) 卸载模块
npm cache clean 清理缓存
npm help xxx 查看帮助
npm view moudleName dependencies 查看包的依赖关系
npm view moduleNames 查看node模块的package.json文件夹
继续阅读 »
在使用iOS 7.1 SDK开发的时候,有一个ShareViewController,在viewDidLoad中需要添加一个UITextView控件,并且已经设置好了一段比较长的文本。代码如下:
- (void)viewDidLoad
{
CGRect rcShareTextView = CGRectMake(0, 0, 290, 150);
self.shareTextView = [self defaultShareTextView];
_shareTextView.frame = rcShareTextView;
[self.view addSubview:_shareTextView];
}
继续阅读 »
{% asset_img RefreshLayout.png %}
[QuickAF]使用RefreshLayout控件进行下拉刷新和上拉加载,通过在布局中定义app:ptr_content和app:ptr_empty或api中设置内容layout和错误view。
RefreshLayout的特点如下:
- 支持任意Layout的下拉刷新和上拉加载,默认支持VScrollView,RecyclerView, ListView, GridView上拉/下拉,还可以通过registerDetector来支持更多的Layout;
- 支持自定义EmptyView,一个EmptyView包含loading, empty, error三个子
继续阅读 »
参考原文:https://github.com/angular-ui/ui-router/wiki
ui-router 的工作原理非常类似于 Angular 的路由控制器,但它只关注状态。
在应用程序的整个用户界面和导航中,一个状态对应于一个页面位置
通过定义controller、template和view等属性,来定义指定位置的用户界面和界面行为
通过嵌套的方式来解决页面中的一些重复出现的部位
最简单的形式
模板可以通过下面这种最简单的方式来指定
html
in index.html
javascript
// in app-states.js (or whatever you want to nam
继续阅读 »
之前已经写过通过应用主题和使用ListView, CardView,应用Material Design样式,同时都都可以通过support library向下兼容。今天要写的阴影和视图裁剪,无法向下兼容,请注意。
Material Design 为用户界面元素引入了深度这个元素。深度帮助用户理解各个元素之间的重要关联和帮助用户关注他们手上的任务。
视图的高度(elevation),通过Z属性表现,通过他的阴影确定:z值更高的视图投影出更大的阴影。视图只在Z=0的平面上投影处阴影;他们不会投影阴影在其他放在下面的视图上面和高于z=0的平面。
more
有更高Z值的视图挡住Z值较低的视图。无论如何,Z值不会影响到View的大小。
继续阅读 »