- 浏览: 104172 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
求知者long:
测试证书:https://www.washington.edu ...
Android Https请求详细demo -
liuhui880417:
你这个证书是本地写死到assert路径下的,安全吗?我觉得本地 ...
Android Https请求详细demo -
BigBird2012:
initSSLWithHttpClinet 这个方法在哪里?
Android Https请求详细demo -
stone02111:
<pre name="code" c ...
地图选择及地图偏移解决方案(二) -
laizhiming1989:
直接 buff.replaceAll("[^\u4E ...
java中 去除 字符串里面 所有非汉字内容
Jamendo的播放界面做的很不错,如下图:
中间那四个按钮加入了透明度渐变动画,点击桌面会出现这四个Button
中间那个背景的下方还使用了倒影,效果看起来很不错
最后就是使用了SlidingDrawer这几方面都可以学习下。
先说下那四个按钮的布局
<RelativeLayout android:id="@+id/FourWayMediaLayout" android:layout_height="300dip" android:layout_width="300dip" android:background="@null" android:layout_centerHorizontal="true" android:layout_alignTop="@id/ReflectableLayout"> <ImageButton android:id="@+id/PlayImageButton" android:background="@null" android:src="@drawable/player_play_light" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="10dip" android:layout_alignParentTop="true" android:visibility="gone"></ImageButton> <ImageButton android:id="@+id/StopImageButton" android:background="@null" android:src="@drawable/player_stop_light" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginBottom="10dip" android:layout_alignParentBottom="true" android:visibility="gone"></ImageButton> <ImageButton android:id="@+id/NextImageButton" android:background="@null" android:src="@drawable/player_next_light" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginRight="10dip" android:layout_alignParentRight="true" android:visibility="gone"></ImageButton> <ImageButton android:id="@+id/PrevImageButton" android:background="@null" android:src="@drawable/player_prev_light" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10dip" android:layout_alignParentLeft="true" android:visibility="gone"></ImageButton> </RelativeLayout>
fade_in.xml 位置在Res/anmi文件夹下面,我们看到其实即使定义了动画中的alpha通过设置透明度来实现,fade_in.xml主要是从无到有的渐变过程
<set xmlns:android="http://schemas.android.com/apk/res/android" android:zAdjustment="bottom" android:fillAfter="false"> <alpha android:fromAlpha="0" android:toAlpha="1.0" android:startOffset="400" android:duration="400" /> </set>
fade_out.xml 主要是从有到无的渐变过程
<set xmlns:android="http://schemas.android.com/apk/res/android" android:zAdjustment="bottom" android:fillAfter="false"> <alpha android:fromAlpha="1.0" android:toAlpha="0" android:duration="400" /> </set>
之后就是在代码中通过定义监听器
private ImageButton mPlayImageButton; private ImageButton mNextImageButton; private ImageButton mPrevImageButton; private ImageButton mStopImageButton; ,............................. private Animation mFadeInAnimation; private Animation mFadeOutAnimation; ............................... mFadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in); mFadeOutAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out); mFadeOutAnimation.setAnimationListener(new AnimationListener(){ @Override public void onAnimationEnd(Animation animation) { setMediaGone(); } @Override public void onAnimationRepeat(Animation animation) { // nothing here } @Override public void onAnimationStart(Animation animation) { setFadeOutAnimation(); } }); mFadeInAnimation.setAnimationListener(new AnimationListener(){ @Override public void onAnimationEnd(Animation animation) { new Handler().postDelayed(new Runnable(){ @Override public void run() { if(mFadeInAnimation.hasEnded())//judge whether the fadeInAnimation is ended mPlayImageButton.startAnimation(mFadeOutAnimation); } }, 7500); } @Override public void onAnimationRepeat(Animation animation) { // nothing here } @Override public void onAnimationStart(Animation animation) { setMediaVisible(); } }); /** * Makes 4-way media visible */ private void setMediaVisible(){ mPlayImageButton.setVisibility(View.VISIBLE); mNextImageButton.setVisibility(View.VISIBLE); mPrevImageButton.setVisibility(View.VISIBLE); mStopImageButton.setVisibility(View.VISIBLE); } /** * Makes 4-way media gone */ private void setMediaGone(){ mPlayImageButton.setVisibility(View.GONE); mNextImageButton.setVisibility(View.GONE); mPrevImageButton.setVisibility(View.GONE); mStopImageButton.setVisibility(View.GONE); } /** * Sets fade out animation to 4-way media */ private void setFadeOutAnimation(){ mPlayImageButton.setAnimation(mFadeOutAnimation); mNextImageButton.setAnimation(mFadeOutAnimation); mPrevImageButton.setAnimation(mFadeOutAnimation); mStopImageButton.setAnimation(mFadeOutAnimation); } mFadeInAnimation); mStopImageButton.setAnimation(mFadeInAnimation); } /** * Sets fade out animation to 4-way media */ private void setFadeInAnimation(){ mPlayImageButton.setAnimation(mFadeInAnimation); mNextImageButton.setAnimation(mFadeInAnimation); mPrevImageButton.setAnimation(
从以上代码中,可以看出其实使用动画的步骤其实还是很容易的:
1.定义动画xml文件,可以是透明度,移位,缩放OR 旋转等动画效果
2.调用AnimationUtils的loadAnimation方法来加载动画xml文件
mFadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in);
mFadeOutAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out);
3.给需要动画显示效果的控件加上动画
mPlayImageButton.setAnimation(mFadeOutAnimation);
...........
下面说说布局中那个image倒影的实现:
代码中写了了两个自定义View,分别继承自LiearLayout和ImageView
public class ReflectableLayout extends RelativeLayout
public class ReflectiveSurface extends ImageView
其中ReflectableLayout里面存放有两个继承自ImageView的RemoteImageView
下面分析怎么实现倒影的
其实步骤很简单,只要在ReflectiveSurface里面传入经过处理变换的canvas然后调用ReflectableLayout的Ondraw方法就可以
所谓处理其实就是进行一个坐标变化然后调用scale(1f,-1f)进行绘制
具体实现代码如下:
protected void onDraw(Canvas canvas) { if(mReflectableLayout == null){ super.onDraw(canvas); return; } // reflect & copy canvas.translate(0, mReflectableLayout.getHeight());//先把坐标点移自ReflectiveSurface画布的起点 canvas.scale(1f, -1f);//-1表示方向相反 // render mReflectableLayout.draw(canvas);//传入经过处理的Canvas super.onDraw(canvas); }
protected void onDraw(Canvas canvas) { super.onDraw(canvas);//对传过来的Canvas进行绘制 if(mReflectiveImageView == null) return; // We need to notify ImageView to redraw itself mReflectiveImageView.postInvalidate(); }
这里面由于canvas的相对原点是针对要绘制的widget而言,因此,如果想在ReflectiveSurface里进行绘制,必须通过translate进行变换
以上
发表评论
-
Android Https请求详细demo
2014-11-06 18:26 16398Android Https详细请求全方案实现, ... -
Android Interpolators
2012-12-26 18:12 1065Android Interpolators 定义动 ... -
android系统给进程分配内存情况(4.0 ics)
2012-12-25 13:21 2068android系统给进程分配内存情况(4.0 ics) ... -
地图选择及地图偏移解决方案(三)
2012-09-25 17:43 2207(转)如何在Android真 ... -
怎样使一个Android应用不被杀死?(整理)
2012-06-13 23:27 0怎样使一个Android应用不被杀死?(整理) ... -
android面试汇总(百度+360+Tencent+淘宝+Qualcomm+HTC)
2012-06-13 23:21 2548汇总自己经历了一些来自百度,360 ,淘宝,腾讯,高通中国, ... -
一个体现Java接口及工厂模式优点的例子
2012-01-04 23:29 975一个体现Java接口及工 ... -
点击Dialog中的按钮不关闭窗口的实现方法
2011-07-22 12:00 8843阅读评论 在Android实际开发中,我们可能常常需 ... -
(转)java中byte转换int时为何与0xff进行与运算
2011-04-04 15:26 1667[转]java中byte转换int时 ... -
读取zip文件中xml文件
2011-03-09 23:26 4903package com.oppo; import ... -
Android 应用程序获得版本号
2011-01-26 20:27 2783/** * Retrieves application ... -
Dom4j 解析及遍历XML 解决SQL硬编码
2011-01-26 12:59 1646在进行应用程序开发特别是一些主要以查询数据库为主的应用时 ... -
Jamendo开源在线音乐播放器源码分析之主界面显示Adapter之功劳
2011-01-20 23:03 1930今天分析下主界面的 ... -
Android Jamendo源码 图片缓存实现
2011-01-20 22:30 4533Jamendo 代码Image缓存实现: package ... -
android在线音乐Jamendo学习之application全局变量
2011-01-20 21:50 2043在Jamendo程序中,有一个很明显的特征是存在一个全局的Ja ... -
Jamendo开源在线音乐播放器源码分析之Music搜索实现机制
2011-01-15 22:52 1973今天主要分析音乐搜索这部分的实现机制 Ja ... -
Jamendo开源在线音乐播放器源码分析之简介
2011-01-15 22:14 3925Jamendo android在线音乐播放器简介 ...
相关推荐
Jamendo在线音乐播放器是一款android平台在开源的在线音乐播放,该播放器的主要特色如下: 1. 界面美观,在jamendo播放器中精美的布局的随处可见,大量使用自定义控件和Adapter进行布局,这点可供初学者好好探讨...
Android应用源码之jamendo-开源在线音乐.zip项目安卓应用源码下载Android应用源码之jamendo-开源在线音乐.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
jamendo-开源在线音乐
jamendo_一款android开源的在线音乐播放器源代码
著名的开源音乐播放器jamendo。 写的比较好,有兴趣的同学可以参考一下。
jamendo-开源在线音乐,这是一款来自国外的Android 原生音乐播放APP软件,支持专辑加载,支持各种音乐的播放控制,界面简洁实用,它的价值的是代码的参考性比较大,这个播放软件还可下载音乐,运行视图如截图所示,...
telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器)安卓源码.7z
Android应用源码之jamendo-开源在线音乐_jamendo
安卓Android源码——jamendo-开源在线音乐.zip
jamendo-开源在线音乐
jamendo-开源在线音乐.zip
jamendo 是全国最大的开源音乐播放器 是android 初学者的好实例 初学者可以通过对jamendo 源码的研究 可以对android'有基础性的认识 jamendo源码可以对四大组件都有 质的的认识和理解
源码参考,欢迎下载
安卓开发-jamendo-开源在线音乐.zip
小程序源码 telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器).zip
Android源码——telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器).zip
源码参考,欢迎下载
安卓Android源码——telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器).zip