《代码里的世界》UI篇

用文字札记描绘自己 android学习之路

转载请保留出处 by Qiao
http://blog.csdn.net/qiaoidea/article/details/46608385

【导航】


1.概述

  作为一款优秀的社交聊天软件,QQ始终保持着优秀的交互与设计,同时引领不少新时尚与标准规范,而它同时也有一些人性化的设计颇值得为人称道。今天要提到的是QQ消息未读拖拽清除(一键退朝”,“一键清除未读”,“一键下班”)的功能。具体细节参考 知乎:一键消除红点功能是怎么想出来的?当然,得益于诸位大大的各种尝试,小弟也稍加模仿修改了一个类似的Demo.这里展示下我们最后实现的各种样式及效果图:
  
  QQ未读提醒拖拽删除效果图
  
  (注:部分设计思想借鉴 chenupt的博文,不过其部分细节和实用性不够友善,拖动区域小,移除效果不随手指移动等原因,特作修缮并加一个人理解稍作补充。)
  示例源码 已更新上传,包涵了滑动切换fragment和底部tab变色效果。具体实现方案鸿神已经提过,有兴趣的点个赞我后边再另开一篇仔细啰嗦下。

阅读全文 »

没有了google的日子是相当难受,下面推荐一些google的镜像站,好东西当然要拿出来共同分享!
以下镜像站分原版和非原版,非原版界面有些改变,搜索结果依然是相同的。


1.非原版:

Glgoo:http://www.glgoo.com/
谷粉搜搜:http://www.gfsoso.net/
谷粉搜搜:http://www.gfsswy.com/
谷粉搜搜:http://gufensoso.com/
谷粉恰搜:http://www.qiasou.com/
蝴蝶:http://www.xiexingwen.com/
Googleout:https://www.out1000.com/
一哥搜:http://www.egeso.com/
谷歌搜:http://www.gugesou.com/
谷壳:http://www.googke.me/
谷鸽:http://www.gvgle.com/
南搜:http://nan.so/
白鸽:http://baigeso.com/
GG搜索:http://ggsousuo.duapp.com/
Avira:https://safesearch.avira.com/
Suche:http://suche.web.de/
WOW:http://www.wow.com/
Ask:http://home.tb.ask.com/
谷歌363:http://www.g363.com/

阅读全文 »

《代码里的世界》UI篇

用文字札记描绘自己 android学习之路

转载请保留出处 by Qiao
http://blog.csdn.net/qiaoidea/article/details/46417747

【导航】


1.概述

  在讲述了弹出式对话框和对其 源码分析之后,我们尝试来模仿一下ios中常见的弹出式按钮选项——ActionSheet。其实样式也比较简单,从底部弹出几个按钮,提供选项菜单,同时出现半透明背景蒙版。具体详情及效果参考IOS设备。这里展示下我们最后实现的各种样式及效果图:
  
  仿IOS ActionSheet效果图   


2.分析研究

  动手实现之前,先简单说两句。实现这个样式,具体要怎么做,能做成什么样,究竟该怎么用,到底好不好用?额,不知道,似乎都看你的编写技巧和封装了。鄙人愚笨,且写且摸索。
  当然先从熟悉的自定义View入手,使用一个线性布局LinearLayout嵌套N个Button实现。黑色半透明背景采用单独一个View,便于包装使用。做出最基本的效果之后,封装对外接口,用String[]数组来存取每个Button item的文本,并定义一个itemListener,设置监听item的点击事件。
  OK。完成这个并不难,如果我们想更进一层做好扩展,不妨尝试使用DialogFragment再做一遍,另外,前面还有提到AlertDialog中使用的Builder模式,我们也来做一下,看看效果如何。那么,为什么不更灵活一点儿,使用我们自定义的样式,可以切换ActionSheet风格,比如IOS6和IOS7?
  具体怎么做,来理下思路。首先继承自Fragment,在OnCreateView中实现自定义View,当然,在自定义View中使用我们的自定义属性,控制风格样式,另外呢,定义一个静态Builder类,负责设置数据与交互逻辑,最后通过Argument绑定到Fragment中去,实现最终效果。

阅读全文 »

《代码里的世界》 —UI篇 用文字札记描绘自己 android学习之路 转载请保留出处 by Qiaohttp://blog.csdn.net/qiaoidea/article/details/46402845 【导航】 弹出式对话框各种方案 从仿QQ消息提示框来谈弹出式对话框的实现方式 ...
阅读全文 »

《代码里的世界》UI篇

用文字札记描绘自己 android学习之路

转载请保留出处 by Qiao
http://blog.csdn.net/qiaoidea/article/details/45896477

【导航】


1.概述

  android原生控件向来以丑著称(新推出的Material Design当另说),因此几乎所有的应用都会特殊定制自己的UI样式。而其中弹出式提示框的定制尤为常见,本篇我们将从模仿QQ退出提示框来看一下常见的几种自定义提示框的实现方式。
  这里使用的几种弹出框实现方法概括为以下几种:

  1. 自定义Dialog
  2. 自定义PopupWindow
  3. 自定义Layout View
  4. Activity的Dialog样式
  5. FragmentDialog

  先看下最终的效果图
弹出式对话框


2.实践

  前面提到几种实现方式均可以达到同样的演示效果,但其中又是各有不同。这里先逐一列举各种具体实现,最后加以综述总结和归纳吧。
  在此之前呢,先看一下这里实现的对话框共用布局layout/confirm_dialog.xml 。

阅读全文 »

《代码里的世界》UI篇

用文字札记描绘自己 android学习之路

转载请保留出处 by Qiao
http://blog.csdn.net/qiaoidea/article/details/45599593

【导航】


1.概述

  前面封装view的时候用到了自定义属性,觉得有必要单独讲一下这部分,但是呢,又不想向其他文章一样千篇一律地写这些东西。所以呢,后便会加一些临时的发散思维,引用点有意思的东西。分享东西嘛,随性点儿。
  回归正题,我们想在view中使用自定义属性要怎么做呢?
  其实有如下几点:

  1. declare-styleable 在res/values目录下新建xml文件 自定义你的属性
  2. AttributeSet和TypedArray 在view中获取这些属性对应的值,设置绑定到view上
  3. xmlns申明与引用 在你要使用的地方引入命名空间并使用这些属性,赋值

  然后我们来尝试通过这些步骤做些自定义view,同时呢,我期望能方便快捷的绑定一些事件,执行相应操作。尝试来做一下。
  xml直接定义view和点击事件的demo
  xml直接定义view和点击事件的demo

阅读全文 »

《代码里的世界》UI篇

用文字札记描绘自己 android学习之路

转载请保留出处 by Qiao
http://blog.csdn.net/qiaoidea/article/details/45850641

【导航】


1.概述

  说起空间动态、微博的点赞效果,网上也是很泛滥,各种实现与效果一大堆。而详细实现的部分,讲述的也是参差不齐,另一方面估计也有很多大侠也不屑一顾,觉得完全没必要单独开篇来写和讲解吧。毕竟,也就是两个view和一些简单的动画效果罢了。
  单若是只讲这些,我自然也是不愿花这番功夫的。虽然自己很菜,可也不甘于太菜。所以偶尔看到些好东西,可以延伸学写下,我还是很情愿拿出来用用,顺带秀一秀逼格什么的。
  不扯太多,先说说今天实现点赞效果用到的自以为不错的两个点:

  • Checkable 用来扩展View实现选中状态切换
  • AndroidViewAnimations 基于nineoldandroids封装的android动画简易类库。究竟有多简单呢,就像这样

    AnimHelper.with(new PulseAnimator()).duration(1000).playOn(imageView);
    作用: 在imageView上使用PulseAnimator这个动画效果,播放一秒。

  当然是从实现角度来看这个库啦,如果仅仅是使用,google/百度一大堆啦。
  
结合前两篇富文本折叠展开,加上我们的点赞view 做出的demo整合效果图:
点赞效果

阅读全文 »

《代码里的世界》UI篇

用文字札记描绘自己 android学习之路

转载请保留出处 by Qiao
http://blog.csdn.net/qiaoidea/article/details/45568653

【导航】


1.概述

  经常在APP中能看到有引用文章或大段博文的内容,他们的展示样式也有点儿意思,默认是折叠的,当你点击文章之后它会自动展开。再次点击他又会缩回去。
  网上有找到部分效果,感觉不是很满意。最后自己尝试用 自定义布局layout 写了个demo。比较简陋,不过可以用了。有这方面需求的朋友可以稍加改造下。如有更好的创意,也不妨分享一下。
  
效果图:
多行文本折叠展开


2.具体实现

  但从实现效果方面来看,只用简单定义必要view即可,后变为了方便扩展使用和挪用,又对整个布局进行封装,方便直接使用。

2.1 通过多个布局组合实现

  第一想法当然是用多个View组合来实现。那么久定义一个LinearLayout布局分别嵌套TextView和ImageView来做。
  大概步骤:

- **定义布局,垂直的线性LinearLayout布局、TextView和ImageView。**  在layout中定义基本组件。
- **设置TextView的高度为指定行数*行高。 **  不使用maxLine的原因是maxLine会控制显示文本的行数,不方便后边使用动画展开全部内容。因此这里TextView的高度也因该为wrap_content。
- **给整个布局添加点击事件,绑定动画。** 点击时,若TextView未展开则展开至其实际高度,imageView 旋转;否则回缩至 指定行数*行高 , imageView 旋转缩回。

  

开始编写代码:

  1.在xml中定义布局:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<LinearLayout
android:id="@+id/description_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="12dip"
android:paddingRight="12dip"
android:paddingTop="5dip" >


<TextView
android:id="@+id/description_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="18dip" >

</TextView>

<ImageView
android:id="@+id/expand_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:paddingBottom="5dip"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:paddingTop="5dip"
android:src="@drawable/text_ic_expand"
android:visibility="gone" />

</LinearLayout>

阅读全文 »

《每日墓志铭》系列

  个人日记。本系列用以记录生活札记和个人所感所悟心得,目的期望能做到吾日三省吾身。文字内容谨代表个人观点,如有鄙陋,欢迎批评指正。

##序言
  GitHub博客部署有相当长一段时间了,然而忙着各种事由一直没能正式开始自己的码字之路。其中,很有一段时间各种推迟,各种搪塞,浑浑噩噩地过着。与其美名曰是因为写代码,赶进度,学知识,不如说就是一个懒字而已。

阅读全文 »