Android-自定义Dialog

2014年4月27日 星期天 天气晴朗 心情平静
本篇博文来分享一个也是开发中经常需要用到的功能-自定义对话框,这里我用到了Android中的图形资源shape,具体使用方法,各位看代码吧,Android有多钟图形资源,后面小巫也会总结分享出来,方便各位使用。
我们来看看自定义Dialog的具体步骤吧:
1.修改系统默认的Dialog样式(风格、主题)
2.自定义Dialog布局文件
3.可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类
有兴趣的朋友可以加本人创建的群,里面有丰富的学习资源哦:299402133(移动开发狂热者群)
效果图:
具体实现代码如下:

1. 修改样式
/04_CustomDialog/res/values/styles.xml
添加以下代码:
[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <!-- 对话框主题 -->  
  2.    <style name="DialogTheme" parent="@android:style/Theme.Dialog">  
  3.        <item name="android:windowBackground">@android:color/transparent</item>  
  4.        <item name="android:windowNoTitle">true</item>  
  5.    </style>  

2. 自定义Dialog
[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.wwj.custom.dialog;  
  2.   
  3. import android.app.Dialog;  
  4. import android.content.Context;  
  5. import android.content.res.Resources;  
  6. import android.util.DisplayMetrics;  
  7. import android.view.Gravity;  
  8. import android.view.Window;  
  9. import android.view.WindowManager;  
  10.   
  11. /** 
  12.  * 自定义对话框 
  13.  *  
  14.  * @author wwj 
  15.  *  
  16.  */  
  17. public class CustomDialog extends Dialog {  
  18.     private static int default_width = 160// 默认宽度  
  19.     private static int default_height = 120;// 默认高度  
  20.   
  21.     public CustomDialog(Context context) {  
  22.         super(context);  
  23.     }  
  24.   
  25.     public CustomDialog(Context context, int layout, int style) {  
  26.         this(context, default_width, default_height, layout, style);  
  27.     }  
  28.   
  29.     public CustomDialog(Context context, int width, int height, int layout,  
  30.             int style) {  
  31.         super(context, style);  
  32.         // 设置内容  
  33.         setContentView(layout);  
  34.         // 设置窗口属性  
  35.         Window window = getWindow();  
  36.         WindowManager.LayoutParams params = window.getAttributes();  
  37.         // 设置宽度、高度、密度、对齐方式  
  38.         float density = getDensity(context);  
  39.         params.width = (int) (width * density);  
  40.         params.height = (int) (height * density);  
  41.         params.gravity = Gravity.CENTER;  
  42.         window.setAttributes(params);  
  43.   
  44.     }  
  45.   
  46.     /** 
  47.      * 获取显示密度 
  48.      *  
  49.      * @param context 
  50.      * @return 
  51.      */  
  52.     public float getDensity(Context context) {  
  53.         Resources res = context.getResources();  
  54.         DisplayMetrics dm = res.getDisplayMetrics();  
  55.         return dm.density;  
  56.     }  
  57. }  


3. 自定义布局
/04_CustomDialog/res/layout/dialog_layout.xml
[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="fill_parent"  
  3.     android:layout_height="fill_parent"  
  4.     android:background="@drawable/dialog_bg"  
  5.     android:gravity="center"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <ProgressBar  
  9.         style="@style/DialogTheme"  
  10.         android:layout_width="wrap_content"  
  11.         android:layout_height="wrap_content" />  
  12.   
  13.     <TextView  
  14.         android:id="@+id/message"  
  15.         android:layout_width="wrap_content"  
  16.         android:layout_height="wrap_content"  
  17.         android:layout_marginTop="5dp"  
  18.         android:text="正在执行..." />  
  19.   
  20. </LinearLayout>  

布局文件中用到了一个图像资源:
/04_CustomDialog/res/drawable/dialog_bg.xml
[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:shape="rectangle" >  
  4.   
  5.     <corners android:radius="10dp" />  
  6.   
  7.     <solid android:color="#55000000" />  
  8.   
  9. </shape>  


4. 显示自定义对话框
[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.wwj.custom.dialog;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5.   
  6. /** 
  7.  * 1.修改系统默认的Dialog样式(风格、主题) 
  8.  *  
  9.  * 2.自定义Dialog布局文件 
  10.  *  
  11.  * 3.可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类 
  12.  *  
  13.  * @author wwj 
  14.  *  
  15.  */  
  16. public class MainActivity extends Activity {  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.activity_main);  
  22.   
  23.         CustomDialog customDialog = new CustomDialog(this,  
  24.                 R.layout.dialog_layout, R.style.DialogTheme);  
  25.         customDialog.show();  
  26.     }  
  27.   
  28. }  



from:http://blog.youkuaiyun.com/wwj_748/article/details/24592747
采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值