- 浏览: 426944 次
- 性别:
- 来自: 深圳/湛江
文章分类
最新评论
-
wangyudong:
很多API doc生成工具生成doc需要重度依赖代码里加注解的 ...
[ios]利用xcode自动生成项目文档 -
tiger1819:
有源码么,想学习
[android]仿360状态,类流量监控桌面浮动显示 -
119568242:
借我一双翅膀 写道大哥,求指教啊?
IOS 开发,调用打电话,发短信,打开网址 -
借我一双翅膀:
大哥,求指教啊
IOS 开发,调用打电话,发短信,打开网址 -
li247276297:
楼主 是不是要加个权限?
[android]仿360状态,类流量监控桌面浮动显示
研究了下以前不怎么用到的动画效果的实现
顺便做了一个新浪微博消息页面 图标切换动画 效果的实例
如图
然后封装了一下这个效果的实现代码
如下
package com.lurencun.unit.unit; import android.app.Activity; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.ImageView; /** * 标签切换对应动画效果实现类 * * @author poolo * @since 2012年8月10日 * @version 1.0.0 完成了2,3,4个标签的情况下的处理(越多- -就要以笛卡尔积的数量增长- -我觉得呢2~4够用了) */ public class Unit { private int current = 0; private Activity at; private ImageView cursor; private float bmpW; private float screenW; private float offset;// 偏移量 /** * * @param a * 当前Activity * @param layoutId * 当前作为图标使用的ImageViewId * @param drawId * 当前图标的drawId * @param num * 当前标签个数 */ public Unit(Activity a, int viewId, int drawId, int num) { at = a; init(viewId, drawId, num); } /** * 纯粹是为了好看些的一个初始化数据包 无视这里吧 * * @param viewId * @param drawId * @param num */ private void init(int viewId, int drawId, int num) { cursor = (ImageView) at.findViewById(viewId); bmpW = BitmapFactory.decodeResource(at.getResources(), drawId) .getWidth(); screenW = at.getWindowManager().getDefaultDisplay().getWidth(); offset = (screenW / num - bmpW) / 2; Matrix matrix = new Matrix(); matrix.postTranslate(offset, 0); cursor.setImageMatrix(matrix); } /** * 两个标签的情况 * @param selectId 被选中的id */ public void move2tag(int selectId) { Animation animation = null; float zero = 0; float one = offset * 2 + bmpW; switch (selectId) { case 0: if (current == 1) { animation = new TranslateAnimation(one, zero, 0, 0); } break; case 1: if (current == 0) { animation = new TranslateAnimation(zero, one, 0, 0); } break; } current = selectId; animation.setFillAfter(true); animation.setDuration(300); cursor.startAnimation(animation); } /** * 三个标签的情况 * @param selectId 被选中的id */ public void move3tag(int selectId) { Animation animation = null; float zero = 0; float one = offset * 2 + bmpW; float two = one * 2; switch (selectId) { case 0: if (current == 1) { animation = new TranslateAnimation(one, zero, 0, 0); } if (current == 2) { animation = new TranslateAnimation(two, zero, 0, 0); } break; case 1: if (current == 0) { animation = new TranslateAnimation(zero, one, 0, 0); } if (current == 2) { animation = new TranslateAnimation(two, one, 0, 0); } break; case 2: if (current == 0) { animation = new TranslateAnimation(zero, two, 0, 0); } if (current == 1) { animation = new TranslateAnimation(one, two, 0, 0); break; } } current = selectId; animation.setFillAfter(true); animation.setDuration(300); cursor.startAnimation(animation); } /** * 四个标签的情况 * @param selectId 被选中的id */ public void move4tag(int selectId) { Animation animation = null; float zero = 0; float one = offset * 2 + bmpW; float two = one * 2; float three = one * 3; switch (selectId) { case 0: if (current == 1) { animation = new TranslateAnimation(one, zero, 0, 0); } if (current == 2) { animation = new TranslateAnimation(two, zero, 0, 0); } if (current == 3) { animation = new TranslateAnimation(three, zero, 0, 0); } break; case 1: if (current == 0) { animation = new TranslateAnimation(zero, one, 0, 0); } if (current == 2) { animation = new TranslateAnimation(two, one, 0, 0); } if (current == 3) { animation = new TranslateAnimation(three, one, 0, 0); } break; case 2: if (current == 0) { animation = new TranslateAnimation(zero, two, 0, 0); } if (current == 1) { animation = new TranslateAnimation(one, two, 0, 0); } if (current == 3) { animation = new TranslateAnimation(three, two, 0, 0); } break; case 3: if (current == 0) { animation = new TranslateAnimation(zero, three, 0, 0); } if (current == 1) { animation = new TranslateAnimation(one, three, 0, 0); } if (current == 2) { animation = new TranslateAnimation(two, three, 0, 0); } break; } current = selectId; animation.setFillAfter(true); animation.setDuration(300); cursor.startAnimation(animation); } }
一个需要注意的地方 使用此方法的童鞋 切记自己的ImageView需要设置 android:scaleType="matrix" 才能使图形作为矩形计算 不至于出现错误
<ImageView android:id="@+id/testImg1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:contentDescription="@string/hello" android:scaleType="matrix" android:src="@drawable/jian_tou" />
部分借鉴与:http://www.eoeandroid.com/code/2012/0322/994_2.html
另如果路过的同学知道如何截android手机上的动态图麻烦留言告知下,谢谢。
jar包,源码,apk,截图都在下面。
已经交给团队封装代码的童鞋 将会封装到这个工具jar中
https://github.com/chenyoca/ToolkitForAndroid
发表评论
-
[android]使用 Matrix 的随触摸旋转的ImageView
2013-02-22 01:58 7923使用 Matrix 的随触摸旋转的ImageView 突 ... -
[android]动态改变按钮背景状态 StateListDrawable
2012-10-29 10:52 1472动态改变按钮背景状态 很少用到 上次和六哥聊到。 ... -
[android]ViewPage上无法通过onKeyDown()获得按钮事件
2012-08-20 04:53 1366系统无法监听到遥控器在VewPage上的按钮事件,如需 ... -
[android]待解决 lisTview 的onItemSelected 监听事件焦点的问题。
2012-08-18 21:18 2176今天遇到个问题 到目前为止 一直不理解为什么 大概描述下布局 ... -
[android]layout_weight 在layout_width 为fill_parent 与wrap_content 时的不同含义
2012-08-12 12:52 1270转自:http://hi.baidu.com/l ... -
[android]仿制新浪微博消息页面 图标切换动画
2012-08-10 17:33 3研究了下以前不怎么用到的动画效果的实现 顺便做了一个新浪微 ... -
[android]仿制新浪微博消息页面 图标切换动画
2012-08-10 17:33 0研究了下以前不怎么用到的动画效果的实现 顺便做了一个新浪微 ... -
[android]Activity切换动画
2012-08-10 12:23 1479今天准备比赛的时候 遇到了这个问题。 查了些资料 ... -
android中ADT版本问题:无故报 java.lang.NoClassDefFoundError
2012-07-31 22:08 1792今天修改一个老项目的时候,发现在所有配置正确的情况下,代目无任 ... -
[android]仿360状态,类流量监控桌面浮动显示
2012-05-27 22:03 6031前两天看到部分音频播放器可以实现在桌面上显示歌词,360那个浮 ... -
[转]android开发问题记录 "founderapp"
2012-02-08 10:48 1071这段时间,由于某种原因,一直在做android手机开发, ... -
关于weight
2012-02-05 21:20 843layout_weight=1后,除了其它的控件之外剩 ... -
判断SD卡是否存在
2012-02-02 17:54 873android.os.Environment.getEx ... -
[转]Android文件管理器介绍
2012-02-02 16:50 3081转自:http://www.linuxidc.com/L ... -
[转]Android文件管理器介绍
2012-02-02 16:49 5转自:http://www.linuxidc.com/L ... -
[转]android 几何图形的绘制
2012-02-01 16:06 2193转自:http://byandby.iteye.c ... -
Android菜鸟日记32-游戏中的碰撞
2012-01-11 23:09 1754Android菜鸟日记 32-游戏中的碰撞 一、 ... -
Android菜鸟日记31-selector 中使用 shape
2012-01-11 23:05 1613Android菜鸟日记 31- ... -
Android菜鸟日记30-View与SurfaceView
2012-01-11 22:45 949Android菜鸟日记 30 View与Surfa ... -
[转]Android开发者指南-Manifest.xml-activity[原创译文]
2012-01-10 17:55 943<activity android:allowTa ...
相关推荐
【标题】"仿制新浪微博"涉及的是iOS应用开发领域,主要目标是创建一个与新浪微博相似的应用程序。在iOS开发中,通常使用Objective-C或Swift语言,结合Apple的开发框架UIKit来构建用户界面,并通过WebKit处理网页内容...
在仿制新浪微博的弹出动画中,我们需要关注以下几个关键点: 1. **自定义转场动画**:利用`UIViewControllerAnimatedTransitioning`协议,可以实现视图控制器间的自定义过渡动画。在这个例子中,可能是通过一个平滑...
【标题】"仿新浪微博客户端"涉及的是一款针对Android平台开发的应用程序,旨在模仿新浪微博的功能和用户体验。这样的项目对于初学者来说是一个很好的实践案例,因为它涵盖了移动应用开发中的多个关键技术和设计原则...
在仿制新浪微博客户端的过程中,还需要考虑以下几点: 1. 数据分页:为了优化性能,通常不一次性加载所有数据,而是采用分页的方式,每次只加载一部分数据。 2. 动画效果:下拉刷新时,可以添加旋转的刷新指示器动画...
在Android开发领域,微信5.2界面和新浪微博客户端的仿制是常见的学习项目,它们能够帮助开发者提升对Android设计规范、UI布局以及网络通信的理解。本文将深入探讨这两个项目的实现,涉及的知识点主要包括: 1. **...
【标题】"仿新浪微博发布评论js代码"是一个用于创建类似新浪微博风格评论功能的JavaScript实现,主要针对网页中的交互设计。这种代码适用于希望在网站上添加一个简洁且具有类似社交网络功能的评论系统的开发者。 ...
这个“ios-仿新浪微博弹出动画.zip”文件包含了一个模仿新浪微博应用中弹出动画的示例,主要用于帮助开发者理解和实现类似的交互效果。 在iOS中,视图动画主要通过Core Animation框架来实现,它提供了丰富的API来...
该压缩包文件“Android高级应用源码-仿照新浪微博Android客户端个人中心的ScrollView.zip”包含了一个针对Android平台的高级开发示例,旨在模仿新浪微博应用程序个人中心的ScrollView组件。ScrollView是Android UI...
基于Python+Flask的仿制版微博源码+部署文档+全部数据资料 高分项目.zip基于Python+Flask的仿制版微博源码+部署文档+全部数据资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩...
仿制的新浪微博 功能 使用ASI访问微博接口 简单的换肤功能 发送文字微博功能 下拉刷新最新微博 提示未读微博数量 发送带地理位置的微博 选择地理位置时查询附近的地点 扫描二维码(此功能需要在真机查看) 开发...
《四次元新浪微博(1).zip》是一个包含Android源码的学习资源包,主要适用于那些希望深入理解Android开发,特别是对JAVA ANDROID编程有兴趣的开发者。这个压缩包中的内容可能包括了微博应用的客户端源代码,提供了...
"Android仿微信6.0,可自定义切换动画"这个项目就是针对微信6.0版本的UI设计进行的一次实现,它允许开发者创建类似微信的应用,并且能够自定义页面切换时的动画效果。 微信6.0的界面设计简洁而直观,注重用户体验,...
在仿制微博个人页面中,`CoordinatorLayout`通常用作根布局,它可以与`AppBarLayout`结合使用,实现类似顶部导航栏在滚动时渐隐渐现的效果,提供更好的用户体验。 `TabLayout`则是谷歌提供的一个用于展示标签页的...
基于Flask的仿制版微博全部资料+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用...
在仿制微博页面时,可能会用到如、、、等新标签来增强页面的可读性和可维护性。 【压缩包子文件的文件名称列表】中,我们可以推测出项目结构: - `index.html`、`2.html`、`1.html`、`3.html`:这四个HTML文件代表...
【标题】:“仿新浪微博” 该项目的核心目标是创建一个与新浪微博类似的平台,允许用户进行阅读、发布及互动操作。实现这一目标的关键在于理解并利用新浪微博提供的API(Application Programming Interface)文档,...
在Android开发中,为了实现类似新浪微博和QQ空间的帖子显示功能,我们需要对文本进行复杂的样式设置和交互处理。这些功能通常涉及到对TextView的扩展和利用SpannableString对象来标记和控制文本的不同部分。以下是几...
Python优秀项目 基于Flask+MySQL实现的仿制版微博源码+部署文档+全部数据资料.zip 1、代码压缩包内容 代码的项目文件 部署文档文件 2、代码运行版本 python3.7或者3.7以上的版本;若运行有误,根据提示GPT修改;若...
在Android开发中,"仿制网易新闻"是一个常见的学习项目,主要是通过运用ListView组件来实现类似新闻应用的列表展示功能。这个项目可以帮助开发者熟练掌握Android UI设计和数据绑定技术。以下将详细介绍涉及的知识点...