学习android几个月了,对android的UI开发部分一直不是很熟悉。于是最近拿360手机卫士首页来练手,做了个小demo,想与各位多多交流。效果图如下:

(1)首页

(2)transformation动画效果

(3)ViewFlipper滑动屏效果

(4)工具栏侧滑效

将开发经验总结为两个方面

一、编写界面

由于是自己第一次做android应用开发,因此对如何编写Android界面并不熟悉。 在开发中总结的经验如下:

1、新手尽量手动边写布局的xml文件。之前的小练习都是直接在Graphical Layout中直接拖控件,并没有自己编写xml文件。而只有手动边写布局xml文件,才能更加深入体会界面的设计以及各个各个空间属性的影响,更加准确的控制各个控件的位置

2、考虑到屏幕适配的问题。在动手之前看一些屏幕适配的注意事项,将其应用到了开发过程中

3、使用Hierarchy View来观察其他软件的布局。多观察其他成熟软件的布局设计,对自己开发很有帮助。

4、通过反编译获取bitmap等资源。demo中的所有bitmap,均是使用的360手机卫士的bitmap资源,节省了很多时间。并且这些bitmap的命令都有规律,也比较好查找。

5、多多练习各种布局的使用。在该demo中,使用的最多的布局是LinearLayout。 对于大多数界面,LinearLayout都能搞定。 对于比较复杂的界面。 各种布局嵌套是很必要的技巧。例如每个磁贴的布局,都是LinearLayout嵌套FrameLayout,再嵌套LinearLayout

一点小技巧:

(1)将“height"在xml文件中,设置为0, 再在程序运行的动态中设定其高度。可以实现动态增加layout。

(2)为实现侧滑效果,可以在屏幕外建立layout。这样程序启动时是不可见的,在程序运行过程中通过改变margin将其显示出来。

(3)将"layout_height"或者"layout_width"设置为0,再通过设置layout_weight,可以实现height或width按比例显示。

(4)android:src是设置图标,不会拉伸图片。而background是设置背景,会拉伸图片来适应空间。两者可同时使用。

(5)android:visible可以用来实现一些特殊效果。

二、实现动画

1、transformation动画效果,如图2所示。 其实是两个一样大的磁贴(LinearLayout),通过设置他们的topmargin与bottommargin实现的滑动效果。关键的步骤是,新建一个AsyncTask,在doInBackground中,每隔一段时间,计算一个滑动距离。

while(true){distance = speed_Scroll +distance;if(distance>height_View){distance = height_View;break;}publishProgress(distance);try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}  }

在onProgressUpdate中改变两个LinearLayout(命名为curtainLayout与layout)的topmargin与bottommargin。

curtainLayoutParams.topMargin = progress[0]-height_View;curtainLayout.setLayoutParams(curtainLayoutParams);layoutParams.topMargin = progress[0];layoutParams.bottomMargin = -progress[0];tileGUILayout.setLayoutParams(layoutParams);

2、ViewFlipper滑动屏效果 。这个效果容易实现,使用android中的FlipperView类,建立一个GestureDetecor.onGestureListener来监听手势,重载OnFling事件,设置setInAnimation与setoutAnimation的动画

viewFlipper.setInAnimation(context, R.anim.push_left_in);viewFlipper.getChildAt(0).setVisibility(View.VISIBLE);viewFlipper.setOutAnimation(context, R.anim.push_left_out);viewFlipper.setDisplayedChild(1);  lastPosition = 1;

布局文件xml如下所示

 <ViewFlipperandroid:id="@+id/flipperView"android:layout_width="match_parent"android:layout_height="match_parent"><include android:id = "@+id/flipperView1"layout = "@layout/gridview1_main"/><include android:id = "@+id/flipperView2"layout = "@layout/gridview2_main"/>           </ViewFlipper>   

3、工具栏侧滑效果,这个同1。特别说明的是,首页中的磁贴部分,是一个gridview。每一个磁贴,例如”骚扰拦截“,”手机清理“等,都是通过继承BaseAdapter,在其getItem函数中使用LayoutInflater.inflate动态加载的。

UI开发部分,还是得多加练习,特别是各种动画,值得我们深入研究下去。不对的地方,还请各位多多指正

仿360手机卫士首页[android平台]相关推荐

  1. 高仿360手机卫士——Android源码

    高仿360手机卫士 高仿360手机卫士界面android源码,左右滑动效果,超炫. 下载地址:http://www.devstore.cn/code/info/1173.html 运行截图:    热 ...

  2. 高仿360手机卫士应用源码

    高仿360手机卫士界面android源码,左右滑动效果,超炫. 源码下载:http://code.662p.com/list/11_1.html <ignore_js_op> 详细说明:h ...

  3. Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果

    转载自:http://blog.csdn.net/guolin_blog/article/details/8689140 大家好,今天给大家带来一个仿360手机卫士悬浮窗效果的教程,在开始之前请允许我 ...

  4. 【android】仿360手机卫士的简易设计思路及源码

    笔者最近一直忙于满广州的跑,实习好难找好难找,博客也是有点久没去更新.仿360手机卫士的实现的目的更多的是出于对常用知识点的一个巩固吧,比较适合像我这种接触没多久的学习者在学习之余拿来练手保持写代码的 ...

  5. Android实现仿360手机卫士悬浮窗效果

    大家好,今天给大家带来一个仿360手机卫士悬浮窗效果的教程,在开始之前请允许我说几句不相干的废话. 不知不觉我发现自己接触Android已有近三个年头了,期间各种的成长少不了各位高手的帮助,总是有很多 ...

  6. android 360旋转动画,ANDROID——仿360手机卫士的旋转打分控件

    简介 灵感源自360手机卫,主要功能就是实现显示评分或等级的效果.并稍微改良了一下,有更好的实用性和扩展性. 因为主要用途就是显示"分数","评价",所以暂且叫 ...

  7. 仿360手机卫士之查询号码归属地

    360手机卫士里基本的功能–查询来电归属地 技术要点大概如下 - 对最新号码归属地数据的压缩与解压 - sqlite3数据库的基本操作 - 监听手机来电 - 自定义Toast 准备操作 最新号码归属地 ...

  8. Android开发之仿360手机卫士悬浮窗效果

    基本的实现原理,这种桌面悬浮窗的效果很类似与Widget,但是它比Widget要灵活的多.主要是通过WindowManager这个类来实现的,调用这个类的addView方法用于添加一个悬浮窗,upda ...

  9. android 球形进度,android仿360手机卫士的自定义波浪球形进度View 滚动痕迹

    先看问题效果图: 那个球星水波纹是个自定义view,代码如下 import com.jinsheng.R; import com.jinsheng.util.MyUtil; import androi ...

最新文章

  1. java中hashcode_浅谈Java中的Hash值
  2. 干货丨全球人工智能专利分布战情图,看看谁才是人工智能界的老大!
  3. 才做三个月的新业务,为何唐岩对陌陌直播寄予厚望
  4. Druid源码分析系列1:dataSource.init()的准备工作
  5. 架构师2月刊发布:解读Android、高效运维、API设计方法论
  6. Tomcat 添加为系统服务 开机自动启动
  7. 泰山站和泰安站怎么区分?
  8. sql优化常用的几种方法_Hive常用性能优化方法实践全面总结
  9. Graphics.DrawLine 方法
  10. CAD2020软件安装教程【搬运】
  11. NSIS 简易教程(四)
  12. c语言编程马克思手稿 百例,清华大学出版社-图书详情-《C语言趣味编程100例》...
  13. ABAP中如何建数据库视图和维护视图
  14. 几款重复文件查找工具对比
  15. 通过数字抖动实现更高精度的PWM脉宽控制
  16. 存储器之主存--Cache--辅存大全
  17. Linux系统的基本介绍
  18. 关于Git提交报warning解决方法(个人笔记)
  19. Java知识——精华总结
  20. 计算机组装物料清单,什么叫物料清单

热门文章

  1. win10如何用命令刷新策略
  2. Windows系统如何自动关机?1行代码就能实现自动关机(超简单)
  3. 陆奇是AI的布道师:人类数字化三位一体
  4. 关于运维,阿里云、字节、华科的专家如是说
  5. 【目录】《电路》上下、《电力电子学》、《数字电路》
  6. 模型质量控制管理2——提高精度解决模型非实体不封闭破面等问题
  7. Linux手机DIY.夏新E600和飞利浦968移植软件的开始
  8. Intellij Idea 快捷键设置大全
  9. dcs程序流程图分析_常见DCS工艺流程图识别教你正确读图
  10. python实现计算移动平均值MA