先看效果:



这是我做的一个拨号器强的面板,拨号的时候会查询手机中的联系人,显示在拨号面板上方,点击弹出透明对话框供选择。

这次重点是透明对话框。

先看对话框的theme,style文件:

<?xml version="1.0" encoding="utf-8"?><resources>    <style    name="selectorDialog"    parent="@android:style/Theme.Dialog">    <item name="android:windowFrame">@null</item><!--边框-->        <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->        <item name="android:windowIsTranslucent">false</item><!--半透明-->        <item name="android:windowNoTitle">true</item><!--无标题-->        <item name="android:windowBackground">@drawable/selector_dialog_bg</item><!--背景透明-->        <item name="android:backgroundDimEnabled">false</item><!--模糊-->        <item name="android:backgroundDimAmount">0.6</item>    </style></resources>


对话框背景@drawable/selector_dialog_bg:

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#333333"/><stroke          android:width="2dp"          android:color="#99CC33" /><padding android:left="5dp" android:top="5dp" android:right="5dp"android:bottom="5dp" /><corners android:radius="8dp" /></shape>


然后是对话框的布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"  android:layout_height="wrap_content"  android:orientation="vertical" ><ListViewandroid:id="@+id/selector_dialog_listview"android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:cacheColorHint="#00000000"    android:scrollbars="none"    android:dividerHeight="1.0dip"    android:divider="#C4C4C4" />  </LinearLayout>


程序中:

final View view = LayoutInflater.from(this).inflate(R.layout.selector_dialog, null);    selectorDialog = new Dialog(DialerActivity.this, R.style.selectorDialog);    selectorDialog.setContentView(view);        final BaseAdapter adapter = new SelectorAdapter(DialerActivity.this, selectorList);ListView listView = (ListView) view.findViewById(R.id.selector_dialog_listview);listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {//对话框中事件处理}});listView.setAdapter(adapter);    selectorDialog.show();    selectorDialog.setCanceledOnTouchOutside(true);        WindowManager windowManager = getWindowManager();    Display display = windowManager.getDefaultDisplay();    WindowManager.LayoutParams lp = selectorDialog.getWindow().getAttributes();    lp.width = (int)(display.getWidth() * 0.9);    if(selectorList.size() > 7) {    lp.height = (int)(display.getHeight() * 0.9);    }    lp.alpha = 0.8f;    selectorDialog.getWindow().setAttributes(lp);


其实主要是通过WindowManager.LayoutParams给对话框设置属性。



更多相关文章

  1. Android(安卓)自定义View实现仿微信语音界面
  2. Android(安卓)Studio错误org.gradle.api.resources.ResourceExce
  3. Activity生命周期和对话框
  4. Android(安卓)Dialog种类大全,让Activity显示在另外一个Activity
  5. 菜鸟的安卓实习之路---设置Activity的大小
  6. Android广播、Service、Activity综合使用
  7. Android(安卓)App实现点击拨号、复制剪贴板、添加手机联系人
  8. Android(安卓)实现PPPoE拨号
  9. Android(安卓)官方推荐 : DialogFragment 创建对话框

随机推荐

  1. android实现底部菜单栏(FragmentTabHost)
  2. 畅享英特尔® 移动科技 开启Android 应用
  3. 美化你的android程序:自定义ListView背景
  4. 微软发布 mircosft remote desktop for a
  5. Android实例剖析笔记(五)
  6. 手势识别兼容Android 1.x和2.x的代码
  7. Android关于图片内存计算
  8. 控件更新Invalidate和postInvalidate的区
  9. Android(安卓)Rtmp客户端搭建
  10. Android硬件抽象层(HAL)概要介绍和学习计划