- 浏览: 119232 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhifeiji512:
George_ghc 写道第一段代码给cursor赋值第二段代 ...
Android中Cursor关闭的问题
关于SlidingDrawer控件
1.重要属性
android:allowSingleTap:指示是否可以通过handle打开或关闭
android:animateOnClick:指示是否当使用者按下手柄打开/关闭时是否该有一个动画。
android:content:隐藏的内容
android:handle:handle(手柄)
2.重要方法
animateClose():关闭时实现动画。
close():即时关闭
getContent():获取内容
isMoving():指示SlidingDrawer是否在移动。
isOpened():指示SlidingDrawer是否已全部打开
lock():屏蔽触摸事件。
setOnDrawerCloseListener(SlidingDrawer.OnDrawerCloseListener onDrawerCloseListener):SlidingDrawer关闭时调用
unlock():解除屏蔽触摸事件。
toggle():切换打开和关闭的抽屉SlidingDrawer。
实例:
自定义SlidingDrawer控件,为得是在SlidingDrawer关闭的状态下,显示content内容
package com.borqs.music.lyric; import android.content.Context; import android.graphics.Canvas; import android.provider.ContactsContract.CommonDataKinds.Event; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.SlidingDrawer; public class LyricSlidingDrawer extends SlidingDrawer { public LyricSlidingDrawer(Context paramContext, AttributeSet paramAttributeSet) { this(paramContext, paramAttributeSet, 0); } public LyricSlidingDrawer(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); } @Override protected void dispatchDraw(Canvas canvas) { long time = getDrawingTime(); View handle = super.getHandle(); View content = super.getContent(); drawChild(canvas, handle, time); if (!isOpened() || isMoving()) { canvas.save(); float f2 = handle.getBottom() - content.getTop(); canvas.translate(0, f2); drawChild(canvas, content, time); canvas.restore(); } else { super.dispatchDraw(canvas); } } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == Event.OFFLINE) { int i = super.getHandle().getBottom(); int j = (int)event.getY(); if (j > i) { int k = i+20; if (j <= k) { animateToggle(); } } } return super.onTouchEvent(event); } }
SlidingDrawer完全打开时隐藏专辑图片,完全关闭时显示专辑图片:
import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.widget.ImageView; public class NowPlay extends Activity { private static final String TAG = "NowPlay"; private LyricSlidingDrawer mSlidingDrawer; private ImageView mHandle; @Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG, "onCreate()"); super.onCreate(savedInstanceState); setContentView(R.layout.now_play); mSlidingDrawer = (LyricSlidingDrawer) findViewById(R.id.lyrics_sliding_drawer); mHandle = (ImageView) findViewById(R.id.lyrics_handle_image); //监听打开抽屉事件 mSlidingDrawer.setOnDrawerOpenListener(new C_SlidingDrawer.OnDrawerOpenListener() { @Override public void onDrawerOpened() { mHandle.setImageResource(R.drawable.lyrics_handle_expand); AlphaAnimation animation = new AlphaAnimation(0.0f, 1.0f); animation.setDuration(1000); animation.setStartOffset(500); animation.setAnimationListener(new fadeAnimationListener()); mAlbum.startAnimation(animation); } }); //监听关闭抽屉事件 mSlidingDrawer.setOnDrawerCloseListener(new C_SlidingDrawer.OnDrawerCloseListener() { @Override public void onDrawerClosed() { mHandle.setImageResource(R.drawable.lyrics_handle_shrink); AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f); animation.setDuration(1000); animation.setStartOffset(500); animation.setAnimationListener(new fadeAnimationListener()); mAlbum.startAnimation(animation); } }); } private class fadeAnimationListener implements AnimationListener{ public void onAnimationEnd(Animation animation) { } public void onAnimationRepeat(Animation animation) { } public void onAnimationStart(Animation animation) { if (mSlidingDrawer.isOpened()) { mAlbum.setVisibility(View.GONE); findViewById(R.id.rs_button_area).setVisibility(View.GONE); } else { mAlbum.setVisibility(View.VISIBLE); } } }
所使用的Layout, 注意SlidingDrawer的相对位置!
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/parent"> <TextView android:id="@+id/trackname" android:textSize="18sp" android:singleLine="true" android:ellipsize="end" android:layout_gravity="center" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dip" android:layout_alignParentTop="true" /> <ImageView android:id="@+id/album" android:layout_below="@id/trackname" android:layout_centerHorizontal="true" android:background="@drawable/album_border_large" android:layout_width="180dip" android:layout_height="180dip" android:layout_marginTop="8dip"/> <com.borqs.music.lyric.LyricSlidingDrawer android:id="@+id/lyric_slidingdrawer" android:layout_below="@id/trackname" android:layout_above="@id/player_common_area" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:handle="@+id/handle" android:content="@+id/lyric_view" android:bottomOffset="-75dip" android:topOffset="0dip" android:animateOnClick="true"> <ImageButton android:id="@id/handle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/lyr_handle_collapse_xml"/> <com.borqs.music.lyric.LyricsView android:id="@id/lyric_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="2dip" android:paddingBottom="2dip" android:paddingLeft="2dip" android:paddingRight="2dip"/> </com.borqs.music.lyric.LyricSlidingDrawer> </RelativeLayout>
发表评论
-
repo用法
2012-03-16 14:24 1285repo用法(转载) http://blogold ... -
Git使用指南
2012-03-15 14:43 9231.创建目录 $ git config --glo ... -
关于Android的多种屏幕支持
2011-12-14 14:23 1292首先是几个基本概 ... -
android ListView 修改背景
2011-12-14 09:39 1899修改listview时存在的 ... -
详解android:scaleType属性
2011-11-28 17:09 6398android:scaleType是控制图片如何res ... -
Android使用AIDL设计和调用远程接口
2011-11-24 18:14 4051在Android中, 每个应 ... -
Android开发 系统应用调用,Intent使用总结
2011-11-09 09:48 1377转载来源网上资料。 显示网页: 1. Ur ... -
ListView结合ContextMenu 获取点击项的Position
2011-11-07 17:35 1462ContextMenu称为上下文菜单,一般在控件上长按时 ... -
List of Android MIME types and Uri's
2011-11-07 16:35 1606This is a list of URIs that can ... -
隐藏输入法
2011-11-07 14:16 837在manifest里设置,android:windowSoft ... -
Android通知及receiver
2011-10-24 15:09 38171. BroadcastReceiver Broadc ... -
Notification
2011-10-21 16:49 1584可以给Notification设置缺省的表现形式: ... -
Android获取其他包的Context实例
2011-10-20 11:17 934Android中有Context ... -
Android 中Message,MessageQueue,Looper,Handler详解+实例
2011-10-18 13:23 964一、几个关键概念 ... -
Activity 的生命周期 以及 横屏竖屏切换时 Activity 的状态变化
2011-10-18 13:21 1077转自:http://www.blogjava.ne ... -
免费的Android UI库及组件推荐
2011-10-18 13:10 3007转自:http://www.iteye.com/news/22 ... -
众多Android 开源项目推荐,给力工作给力学习
2011-10-18 11:54 674转自:http://www.cnblogs.com/Terry ... -
下拉刷新
2011-10-18 11:10 814下拉刷新 参考代码 https://gith ... -
canvas.translate(x,y)理解
2011-10-17 15:59 2690translate(float x,float y)函数是将整 ... -
android.view.WindowManager$BadTokenException: Unable to add window
2011-09-28 10:19 1852android.view.WindowManager$B ...
相关推荐
在Android Studio 3.0版本中,虽然SlidingDrawer已被弃用,但它仍然是许多老项目中的常见元素,理解其工作原理和使用方法对维护这些项目至关重要。 **一、SlidingDrawer基本概念** SlidingDrawer是Android SDK提供...
1. **在XML布局文件中添加SlidingDrawer**:使用`<SlidingDrawer>`标签,并设置`android:handle`为手柄视图的ID,`android:content`为内容视图的ID。 2. **设置属性**:可以设置抽屉的开启状态(`android:open`)、...
综上所述,虽然 SlidingDrawer 在现代 Android 开发中已较少使用,但理解它的工作原理对于理解滑动抽屉的设计模式和如何在新组件中实现类似效果仍然是有价值的。如果你的项目还在使用 SlidingDrawer,可能需要考虑...
在本篇Android学习笔记中,我们将探讨如何使用SlidingDrawer实现多页显示,并理解其工作原理和相关属性。 首先,SlidingDrawer通常用于在主界面下方或上方滑出额外的内容,例如菜单、设置或附加信息。它有两个主要...
总之,虽然SlidingDrawer已不再推荐使用,但了解它的基本原理和使用方法可以帮助我们更好地理解和实现Android中的滑动抽屉效果。在实际项目中,开发者应优先考虑使用更新的组件来保证应用的兼容性和最佳用户体验。
在Android开发中,`SlidingDrawer`是一个非常实用的组件,它允许用户通过手势从屏幕边缘滑动出一个隐藏的抽屉,常用于存放菜单、设置或其他附加功能。本范例程序深入展示了如何有效地实现这一功能,使得用户界面更加...
总结来说,这个项目不仅涉及到SlidingDrawer的使用,还涵盖了GridView、Adapter模式和PackageManager的使用,是学习Android UI设计和数据绑定的好实例。对于初学者而言,这个项目提供了实践这些基础知识的机会,有助...
提供的"SlidingDraw的使用"文件很可能是包含一个简单的SlidingDrawer使用示例,包含了XML布局和对应的Java代码。通过查看和运行这些代码,新手可以更好地理解SlidingDrawer的工作原理及其用法。 7. **注意事项** ...
这个实例是专为初学者设计的,展示了如何使用SlidingDrawer从底部向上滑动的效果。 首先,我们需要了解SlidingDrawer的基本用法。在布局XML文件中,SlidingDrawer作为顶级容器添加,有两个必需的子元素:一个用于...
SlidingDrawer的使用主要包括以下几个关键知识点: 1. **布局定义**:在XML布局文件中,我们需要添加SlidingDrawer标签,并设置相应的属性,如`android:handle`指定手柄(通常是按钮或图像),`android:content`...
需要注意的是,SlidingDrawer在Android API Level 17后已被弃用,推荐使用`android.support.v4.widget.DrawerLayout`或自定义视图实现类似功能。对于低版本的Android系统,可以继续使用SlidingDrawer,但在高版本中...
在早期的Android版本中,SlidingDrawer是开发者常用来创建侧边栏菜单的工具,但在Android设计指南推荐使用NavigationView之后,其使用频率有所下降。尽管如此,SlidingDrawer仍然在某些特定场景下有其独特的价值,...
同时,随着Android版本的更新,SlidingDrawer在新版本中可能已经被弃用,开发者也可以考虑使用其他替代组件,如CoordinatorLayout配合Behavior来实现类似的效果。 总之,自定义四个方向的SlidingDrawer需要对...
以下是一个简单的SlidingDrawer使用示例: ```xml <SlidingDrawer android:layout_width="fill_parent" android:layout_height="fill_parent" android:handle="@+id/handle" android:content="@+id/content" ...
在代码中,我们会使用R.id.drawer、R.id.handle和R.id.content来引用SlidingDrawer及其组件。 proguard.cfg文件是ProGuard配置,用于混淆和优化代码,提高应用的安全性和性能。而.classpath和.project是Eclipse或...
例如,SlidingDrawer在Android 5.0(API级别21)后被弃用,建议使用其他的侧滑菜单库,如`android.support.design.widget.BottomSheetBehavior`或第三方库如SlideUpPanelLayout。源码中可能包含了这些兼容性处理的...
### SlidingDrawer的基本使用 在XML布局文件中,SlidingDrawer可以通过以下方式定义: ```xml <SlidingDrawer android:id="@+id/sliding_drawer" android:layout_width="match_parent" android:layout_height=...
以下是一个简单的SlidingDrawer使用示例: ```xml <SlidingDrawer android:layout_width="fill_parent" android:layout_height="fill_parent" android:handle="@+id/handle" android:content="@+id/content" ...