首先我们看一下新浪微博的效果(其它就是一个dialog):
点击title前 点击title后
实现方式:
首先我们要自定义一个dialog
代码如下:
/***
* 自定义dialog
*
* @author jia
*
*/
public class MyDialog extends Dialog {
private Window window = null;
/***
*
* @param context
* @param layoutResID
* 配置文件
* @param x
* 显示的x坐标
* @param y
* 显示的y坐标
* @param title
* 集合
*/
public MyDialog(final Context context, int layoutResID, int x, int y,
final String[] title) {
super(context, R.style.Transparent);
window = this.getWindow();
window.requestFeature(Window.FEATURE_NO_TITLE);
setContentView(layoutResID);
int width = this.getWindow().getWindowManager().getDefaultDisplay()
.getWidth();
windowDeploy(width / 2, 300, x, y);
show();
}
/***
* 设置窗口显示
*
* @param x
* @param y
* @param dialog_x
* @param dialog_y
*/
public void windowDeploy(int dialog_width, int dialog_height, int dialog_x,
int dialog_y) {
window.setBackgroundDrawableResource(android.R.color.transparent); // 设置对话框背景为透明
WindowManager.LayoutParams wl = window.getAttributes();
wl.width = dialog_width;
wl.height = dialog_height;
// wl.alpha = 0.8f;
wl.gravity = Gravity.LEFT | Gravity.TOP; // 不设置的话默认是居中
wl.x = dialog_x - dialog_width / 2; // 要显示的位置x坐标
wl.y = dialog_y;
window.setAttributes(wl);
window.setWindowAnimations(R.style.dialogWindowAnim); // 设置窗口弹出动画
setCanceledOnTouchOutside(true);
}
}
我们只需要在activity中调用即可:
代码片段:
textView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int x_begin = textView.getLeft();
int x_end = textView.getRight();
int y_begin = textView.getTop();
int y_end = textView.getBottom();// 这个是要显示位置的纵坐标
// 获取最中间的x坐标
int x = (x_begin + x_end) / 2;// 这个值也就是屏幕最中间的值,也可以下面这样
// int x=getWindowManager().getDefaultDisplay().getWidth()/2;
// int[] location = new int[2];
// textView.getLocationInWindow(location); // 获取在当前窗口内的绝对坐标
// textView.getLocationOnScreen(location);// 获取在整个屏幕内的绝对坐标
myDialog = new MyDialog(DialogDemoActivity.this,
R.layout.dialog, x, y_end, title);
View view = LayoutInflater.from(DialogDemoActivity.this)
.inflate(R.layout.dialog, null);
listView = (ListView) myDialog.getWindow().findViewById(
R.id.lv_dialog);
listView.setAdapter(new ArrayAdapter<String>(
DialogDemoActivity.this, R.layout.text, R.id.tv_text,
title));
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
textView.setText(title[arg2]);
myDialog.cancel();
myDialog = null;
}
});
}
});
实现效果如下:
点击前 点击后 选择 选择后
实现起来也不难,有点要说明一下,这里我们用到了.9.png图片,这个图片会自动根据需要伸展,(重要的是不失真,这点很棒吧,详细介绍请点击连接).
源码下载
分享到:
相关推荐
Android Dialog中用Glide加载GIF,Android Dialog中用Glide加载GIF
android点击相机和图片选择用到自定义Dialog
dialog灵活运用,模拟实现新浪、腾讯等微博title选项卡功能。
各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...
安卓使用弹框做到倒计时的用法,分别使用MaterialDialog、AlertDialog来做了一个小demo
Android 生成最简单的dialog弹框,为Button设置OnClickListener监听器,然后调用onCreateDialog函数,声明一个Dialog对象,在这个函数中设置对话框的标题、图标、和提示内容以及为按钮添加监听器,生成生成Dialog...
android dialog向上弹效果,其实动画的效果改变就好
自定义Dialog,模拟支付密码输入框,可以自定义显示的图标。EditText遮在背景View的上面,在afterTextChanged处理密码改变的逻辑。
android Dialog效果集合【全】
做了一个android带小三角的弹出框,就是右上角有个小三角形,整体比较美观,代码精简没有多余,功能到位,具体大家下载下来自己看吧
主要介绍了android自定义Dialog弹框和背景阴影显示效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
拖拽、全屏弹框、局部弹框、模态非模态等等功能,代码简单易懂,写得有点乱欢迎大神知道
其实popupwindow用起来比Dialog 方便,因为dialog一切都需要你自己来实现,而popupwindow帮我们实现了很多,我认为在使用的时候关键我们要看清参数: popupWindow.showAtLocation(parent, gravity, x, y); parent...
定义 Android dialog 对话框位置 源码
在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是...
android Dialog android Dialog
基本覆盖android dialog常见的用法。
自定义dialog弹出框,通过shape和seleter自定义出自己想要的样式。还有弹出的动画,从不同方向弹出和效果。
android dialog嵌套ListView,实现对ListView的添加,删除操作
各种Android Dialog的实现 包括系统的6中dialog和自定义dialog