- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 Android 编程和堆栈溢出的新手,我需要降低应用中 SlidingDrawer 的动画速度。
我已经像这样子类化了 SlidingDrawer:
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.SlidingDrawer;
public class WrappingSlidingDrawer extends SlidingDrawer {
public WrappingSlidingDrawer(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
int orientation = attrs.getAttributeIntValue("android", "orientation", ORIENTATION_VERTICAL);
mTopOffset = attrs.getAttributeIntValue("android", "topOffset", 0);
mVertical = (orientation == SlidingDrawer.ORIENTATION_VERTICAL);
}
public WrappingSlidingDrawer(Context context, AttributeSet attrs) {
super(context, attrs);
int orientation = attrs.getAttributeIntValue("android", "orientation", ORIENTATION_VERTICAL);
mTopOffset = attrs.getAttributeIntValue("android", "topOffset", 0);
mVertical = (orientation == SlidingDrawer.ORIENTATION_VERTICAL);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSpecSize = MeasureSpec.getSize(widthMeasureSpec);
int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec);
int heightSpecSize = MeasureSpec.getSize(heightMeasureSpec);
if (widthSpecMode == MeasureSpec.UNSPECIFIED || heightSpecMode == MeasureSpec.UNSPECIFIED) {
throw new RuntimeException("SlidingDrawer cannot have UNSPECIFIED dimensions");
}
final View handle = getHandle();
final View content = getContent();
measureChild(handle, widthMeasureSpec, heightMeasureSpec);
if (mVertical) {
int height = heightSpecSize - handle.getMeasuredHeight() - mTopOffset;
content.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(height, heightSpecMode));
heightSpecSize = handle.getMeasuredHeight() + mTopOffset + content.getMeasuredHeight();
widthSpecSize = content.getMeasuredWidth();
if (handle.getMeasuredWidth() > widthSpecSize) widthSpecSize = handle.getMeasuredWidth();
}
else {
int width = widthSpecSize - handle.getMeasuredWidth() - mTopOffset;
getContent().measure(MeasureSpec.makeMeasureSpec(width, widthSpecMode), heightMeasureSpec);
widthSpecSize = handle.getMeasuredWidth() + mTopOffset + content.getMeasuredWidth();
heightSpecSize = content.getMeasuredHeight();
if (handle.getMeasuredHeight() > heightSpecSize) heightSpecSize = handle.getMeasuredHeight();
}
setMeasuredDimension(widthSpecSize, heightSpecSize);
}
private boolean mVertical;
private int mTopOffset;
我找到了这个链接:How to change animation velocity on SlidingDrawer ,它说我可以找到替代实现,或者复制源代码并修改它。
我在自己的项目中创建了 SlidingDrawer.java 并粘贴了来自 here 的代码,但有错误。有几行引用了 R.styleable.SlidingDrawer,例如
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.SlidingDrawer, defStyle, 0);
Eclipse 无法解析。
还有四个成员变量(mTop、mBottom、mLeft、mRight)Eclipse无法解析。
如何让 Eclipse 找到这些资源/变量?然后我将能够编辑一些变量以产生更慢的动画,对吗?
最佳答案
我相信 R.styleable 已从 sdk 中删除,不过您可以编写自己的,像这样的东西应该可以工作
在values文件夹中创建一个xml文件
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<declare-styleable name="MySlider">
<attr name = "SlidingDrawer_orientation" format="integer"/>
<attr name = "SlidingDrawer_bottomOffset" format = "dimension"/>
<attr name = "SlidingDrawer_topOffset" format = "dimension"/>
<attr name = "SlidingDrawer_allowSingleTap" format = "boolean"/>
<attr name = "SlidingDrawer_animateOnClick" format = "boolean"/>
<attr name = "SlidingDrawer_handle" format = "reference"/>
<attr name = "SlidingDrawer_content" format = "reference"/>
</declare-styleable>
</resources>
然后在 slider 类中你可以引用xml文件
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MySlider, defStyle, 0);
int orientation = a.getInt(R.styleable.MySlider_SlidingDrawer_orientation, ORIENTATION_VERTICAL);
//...etc. ...
我也在扩展 slidingdrawer 类,这对我有用。
关于android - SlidingDrawer 动画速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6884917/
我的应用程序需要一个滑动抽屉。它应该放在页面的底部。它必须包含一组图像,我必须为滑动抽屉设置背景颜色。我看到了一些示例代码......但我不清楚如何去做。谁能帮忙吗? 最佳答案 我使用 Horizo
我正在尝试实现一个抽屉导航,除了切换按钮不可见之外,一切都运行良好。 这是我的代码: mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLa
我想使用我自己的图像作为处理程序的图像。 如何将默认处理程序图像更改为其他图像?谢谢,埃亚尔。 最佳答案 您可以使用 ImageView 和 src 指向您的图像作为句柄: .
是否可以在抽屉关闭时显示 handle 并在抽屉打开时隐藏它? 我已经尝试覆盖 SlidingDrawer 但到目前为止没有成功。 最佳答案 按照对我有用的技巧隐藏 handle 按钮 关于
我正在尝试使用 SlidingDrawer ViewGroup,但遇到了一些障碍。我们可以将一些监听器附加到 SlidingDrawer: OnDrawerScrollListener OnDrawe
我想使用 SlidingDrawer在一项 Activity 中,我很乐意只使用内置的托盘 handle ,而不是尝试寻找或创建自己的托盘 handle 。我 found it online感谢 Co
是否可以放置 SlidingDrawer,使 handle 正好位于屏幕底部下方? 我要实现的功能是用户按下按钮(未连接到抽屉)以将抽屉从屏幕下方向上滑动。从那里,用户可以使用 handle 将其向下
当我尝试在水平方向上使用 SlidingDrawer 时,我在处理程序和内容之间得到了一个空间。知道如何摆脱它吗?在垂直方向上我没有空格。 最佳答案 在您的 ImageView
我目前在使用 SlidingDrawer 时遇到问题。我希望它在应用程序启动时关闭,这样它就不会妨碍。但是,尽管将 slide.close() 放在我 Activity 的 onCreate() 中,
我是 Android 编程和堆栈溢出的新手,我需要降低应用中 SlidingDrawer 的动画速度。 我已经像这样子类化了 SlidingDrawer: import android.content
我正在处理我的应用程序的一部分,我想知道是否可以让滑动抽屉部分打开而不是完全关闭,这样用户可以在单击显示更多按钮之前查看文本内容的峰值,这将能够显示其余文本。 提前致谢。 最佳答案 我有一个类似的问题
我尝试用 animateOpen() 和 animateClose() 打开/关闭我的滑动抽屉,但它似乎是瞬间打开和关闭的,就像 open() 和 close()。怎么了? 我已经看到 Sliding
您好,我遇到了运行时异常: SlidingDrawer cannot have UNSPECIFIED dimensions 从下面的 XML 中,可以提供任何帮助。
我看了很多地方,但找不到关于如何为我的应用程序制作 SlidingDrawer 的像样的教程。 假设我已经有一个 XML 文件,我想向其中添加一个滑动抽屉...我还想添加一个 TextView 和 L
如何使用未附加的按钮打开 SlidingDrawer?换句话说,我喜欢不带 handle 打开它。 最佳答案 在 SlidingDrawer 上调用 open()。 关于android - 通过按钮打
我刚刚注意到,从 API 17 开始,SlidingDrawer它已被弃用。 评论说: This class was deprecated in API level 17. This class is
有没有办法让抽屉从上往下滑动? 最佳答案 我找到了一个简单的方法来做到这一点。您所要做的就是为slidingDrawer、内容和 handle 设置180º的旋转。举个例子更容易理解,看看我做了什么:
SlidingDrawer隐藏屏外的内容,并允许用户通过handle以显示隐藏内容。它可以垂直或水平滑动,它有俩个View组成,其一是可以拖动的handle,其二是隐藏内容的View.它里面的控件必
我如何将 SlidingDrawer 作为系统覆盖层(或始终将其显示在顶部)?我将使用服务来显示它,但我不知道该怎么做(使用服务将 SlidingDrawer 显示为系统覆盖)我怎样才能像 this
我的问题如下:我想创建一个滑动抽屉,其中处理程序(滑动用于打开/关闭的 View )是一个组合 View ,其方式如下图所示: 期望的行为是: 当用户点击处理程序时,抽屉打开(按钮跟随 View ,因
我是一名优秀的程序员,十分优秀!