读书人

这种效果是如何实现

发布时间: 2013-08-01 15:23:18 作者: rapoo

这种效果是怎么实现
1、点击右上角的拍照,弹出一个抽屉,当我点击屏幕的其它地方(不点抽屉,触摸抽屉时,抽屉不消失)时,抽屉消失,
2、那一种情况是像图中的那样,点击右上角的拍照,弹出一个抽屉,抽屉以外的触摸事件无效!
这种效果是如何实现 android SlidingDrawer?
[解决办法]
你可以把抽屉和不透明的区域看成一个整体的控件

你点击响应出来之后 只是用一个动画 让这个窗口出来。
[解决办法]
这是一个dialog吧,通过setOutsideTouchable(true/false)来控制点击外面dialog是否消失
[解决办法]

引用:
Quote: 引用:

这是一个dialog吧,通过setOutsideTouchable(true/false)来控制点击外面dialog是否消失

就像某信的那种抽屉式功能

http://www.apkbus.com/android-81658-1-1.html
这种功能?网上代码蛮多的
[解决办法]
能做出来的多,只要你有想法, 直接给地下放3个button 放一个layout 里边都行。 PopupWindow,还有楼上说的FragmeLayout 都行。
[解决办法]
楼主你po个邮箱,我发个demo给你
[解决办法]
用Dialog和Fragement应该都是可以实现的。
分析了一下你的需求,大致有以下几点:
1. 界面以抽屉的形式弹出来
2. 界面显示后,背景是DIM效果,如同Dialog显示时的背景。
3. 点击空白处,界面缩回去。
基于以上几点,个人认为用Dialog实现比较方便,因为我们不需要设置DIM效果了。
我简单描述一下用Dialog的实现方式:
1. 自定义一个Dialog
2. 自己定义Dialog的动画,包括enter和exit两种效果,另外再加上一个style文件。
3. 点击Button,显示该Dialog。

自定义Dialog如下:

public class CusDialog extends Dialog
{
private Window window = null;

public CusDialog(Context context)
{
super(context);
}

public void showDialog( int layoutResID, int x , int y, int rId)
{
setContentView(layoutResID);
windowDeploy(x, y, rId);


setCanceledOnTouchOutside(true); // 点击空白处,Dialog消失
show();
}

public void windowDeploy(int x, int y, int rId){
window = getWindow();
window.setWindowAnimations(rId);
//window.setBackgroundDrawableResource(R.color.vifrification);
WindowManager.LayoutParams wl = window.getAttributes();
wl.x = x;
wl.y = y;
window.setAttributes(wl);
}
}



以下是Style文件:mystyle2.xml


android:fromYDelta="300"
android:toXDelta="0"
android:toYDelta="0" />
</set>



以下是dialog_scale_dismiss_2.xml文件:即Dialog将要消失的动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<scale
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="300"
android:fillAfter="false"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.15"
android:toYScale="0.15" />
<translate
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="300"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="300" />
</set>


如何调用:

private void showDialog()
{
CusDialog cusDialog = new CusDialog(this);
cusDialog.setTitle("MessageDialog");
int styleId = com.gtx.R.style.mystyle2; // 生成后的Style ID
cusDialog.showDialog(自己的Dialog布局, 0, 0, styleId);
}

读书人网 >Android

热点推荐