Step1:
自定義的對話框Activity:
public class EthernetConfigDialog extends AlertActivity implements AdapterView.OnItemSelectedListener, DialogInterface.OnClickListener, AlertController.AlertParams.OnPrepareListViewListener { private View mView; static final int BUTTON_SUBMIT = DialogInterface.BUTTON_POSITIVE; private RadioButton mDhcpRadioButton,mStaticIpRadioButton; private LinearLayout mStaticIpConfigLinearLayout; private EditText mIpAddressEditText,mGatewayEditText,mNetworkPrefixLengthEditText,mSubMaskEditText,mDnsFirstEditText,mDnsSecondEditText; private Spinner mEthernetDevicesSpinner,mStaticProxy; private String tIpAddressString="",tGatewayString="",tNetworkPrefixLengthString="",tSubMaskString,tDnsFirstString="",tDnsSecondString=""; private String mEthernetDeviceSelect="",mConnectionTypeSelect="",mStaticProxySelect = ""; private int tEthernetDeviceIndex = 0,tNetworkPrefixLength = 0; private EthernetManager mEthManager; private IpConfiguration config; private static final String PROXY_NONE = "NONE"; private static final String PROXY_STATIC = "STATIC"; private static final String PROXY_UNASSIGNED = "UNASSIGNED"; private static final String PROXY_PAC = "PAC"; private static final String CONNECT_TYPE_DHCP = "dhcp_connect"; private static final String CONNECT_TYPE_STATIC = "static_connect"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final AlertController.AlertParams p = mAlertParams; p.mIsSingleChoice = true; p.mOnItemSelectedListener = this; p.mView = getLayoutInflater().inflate(R.layout.ethernet_ap_dialog, null); mView = p.mView; mDhcpRadioButton = (RadioButton) mView.findViewById(R.id.ethernet_dhcp); mStaticIpRadioButton = (RadioButton) mView.findViewById(R.id.ethernet_static_ip); mStaticIpConfigLinearLayout = (LinearLayout) mView.findViewById(R.id.static_ip_config); mEthernetDevicesSpinner = (Spinner) mView.findViewById(R.id.ethernet_devices); mStaticProxy = (Spinner) mView.findViewById(R.id.ethernet_proxy); mIpAddressEditText = (EditText) mView.findViewById(R.id.ip_address_input); mGatewayEditText = (EditText) mView.findViewById(R.id.gateway_input); mSubMaskEditText = (EditText) mView.findViewById(R.id.submask); mDnsFirstEditText = (EditText) mView.findViewById(R.id.dns1_input); mDnsSecondEditText = (EditText) mView.findViewById(R.id.dns2_input); mEthManager = (EthernetManager) getApplication().getSystemService(Context.ETHERNET_SERVICE); mStaticProxy.setOnItemSelectedListener(this); getEthernetConfigSettings(); mDhcpRadioButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mConnectionTypeSelect = CONNECT_TYPE_DHCP; mStaticIpConfigLinearLayout.setVisibility(View.GONE); } }); mStaticIpRadioButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mConnectionTypeSelect = CONNECT_TYPE_STATIC; mStaticIpConfigLinearLayout.setVisibility(View.VISIBLE); } }); p.mPositiveButtonText = getString(com.android.internal.R.string.ok); p.mPositiveButtonListener = this; p.mNegativeButtonText = getString(com.android.internal.R.string.cancel); p.mPositiveButtonListener = this; p.mOnPrepareListViewListener = this; p.mTitle = getString(R.string.ethernet_dialog_title); setupAlert(); } //旋轉屏幕時不會onCreate() @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }
Step2:
@Override public void onClick(DialogInterface dialog, int which) { boolean positiveResult = which == DialogInterface.BUTTON_POSITIVE; if (positiveResult) { getEthernetConfigData(); }else{ } }
Step3:
<?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2010 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="300sp" android:layout_height="wrap_content" android:fadeScrollbars="false"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true" android:orientation="vertical"> <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="15dp" android:layout_marginLeft="18dp" android:layout_marginTop="8dp" android:text="@string/ethernet_devices_title"/> <Spinner android:id="@+id/ethernet_devices" android:layout_width="match_parent" android:layout_height="wrap_content" android:prompt="@string/ethernet_eth0" android:entries="@array/ethernet_device" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="15dp" android:layout_marginLeft="18dp" android:layout_marginTop="8dp" android:text="@string/connection_type_title" /> <RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dhcp_title" android:checked="true" android:id="@+id/ethernet_dhcp" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/static_ip_title" android:id="@+id/ethernet_static_ip" /> </RadioGroup> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/static_ip_config" android:orientation="vertical" android:visibility="gone" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/ip_address_title" android:layout_marginLeft="18dp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/ip_address_input" android:hint="@string/hint_ip" android:inputType="phone" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/gateway_title" android:layout_marginLeft="18dp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_gateway" android:id="@+id/gateway_input" android:inputType="phone" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/submask_title" android:layout_marginLeft="18dp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_submask" android:id="@+id/submask" android:inputType="phone" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/proxy_title" android:layout_marginLeft="18dp" /> <Spinner android:id="@+id/ethernet_proxy" android:layout_width="match_parent" android:layout_height="wrap_content" android:prompt="@string/proxy_none" android:entries="@array/ethernet_static_proxy" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/dns1_title" android:layout_marginLeft="18dp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_dns1" android:id="@+id/dns1_input" android:inputType="phone" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/dns2_title" android:layout_marginLeft="18dp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_dns2" android:id="@+id/dns2_input" android:inputType="phone" /> </LinearLayout> </LinearLayout> </ScrollView>
Step4:
在AndroidManifest.xml裏添加Activity的聲明:
<activity android:name=".network.EthernetConfigDialog" android:theme="@*android:style/Theme.DeviceDefault.Settings.Dialog" android:configChanges="keyboardHidden|orientation|screenSize" android:enabled="true" android:excludeFromRecents="true"> </activity>
相关推荐
在Android开发中,自定义对话框(Dialog)是创建用户界面时经常需要用到的一种组件。它能够提供一种非模态或模态的方式与用户交互,显示临时的信息或者进行一些简单的操作选择。本文将深入探讨如何在Android中实现...
在Android开发中,自定义对话框(Dialog)是常见的需求,它可以为用户提供更丰富的交互体验。自定义对话框可以按照应用程序的设计风格进行定制,包括布局、颜色、按钮样式等,从而提升应用的用户体验。本篇将围绕...
本资源“安卓Android源码——android 自定义对话框.rar”显然包含了关于如何在Android平台上创建和定制对话框的源代码示例。通过这个压缩包,我们可以学习到如何摆脱系统默认样式,设计出更符合应用风格的对话框。 ...
在Android开发中,自定义对话框(Custom Dialog)是一个重要的组件,它允许开发者根据应用程序的UI风格和功能需求创建独特且交互性强的弹出界面。本压缩包中的资源提供了关于如何在Android应用中实现自定义对话框的...
在Android开发中,自定义对话框(Custom Dialog)是一种常用的技术,它允许开发者根据应用的UI风格和功能需求创建个性化的对话框。本教程将详细讲解如何在Android中实现自定义对话框,并提供代码示例。 一、Android...
在Android开发中,自定义对话框(Dialog)是一种常见的用户交互方式,用于向用户展示临时信息或进行简单操作选择。自定义对话框可以帮助我们更好地控制界面的显示样式,使其更符合应用的整体风格和用户需求。下面...
在Android开发中,自定义对话框(Dialog)是提升用户体验的重要手段之一,它允许开发者根据应用的风格和需求创建独特且吸引人的交互界面。本文将深入探讨如何在Android中实现自定义对话框,并进行界面美化。 首先,...
在Android开发中,自定义对话框(Dialog)是一种常见的用户交互方式,它可以提供更为丰富的界面设计和用户体验。本文将深入探讨如何实现一个类似QQ退出界面的自定义对话框,包括其设计思路、关键代码实现以及可能...
在Android开发中,自定义对话框(Dialog)是常见的用户界面元素,用于向用户展示临时信息或进行简单交互。此资源包"android 自定义对话框.zip"提供了自定义对话框的源码,可以帮助开发者深入了解如何根据项目需求...
在我们的日常项目中很多地方会用到对话框,但是Android系统为我们提供的对话框样子和我们精心设计的界面很不协调,在这种情况下我们想很自由的定义对话框,或者有的时候我们的对话框是一个图片,没有标题和按钮,...
在Android开发中,自定义对话框(Dialog)是一种常见的用户交互方式,用于向用户展示临时信息或进行简单操作。为了使对话框更具吸引力和用户体验,我们常常会为它添加动画效果。下面将详细介绍如何在Android中实现...
在Android开发中,自定义对话框(Custom Dialog)是一种常用的设计模式,用于向用户展示一些重要信息或进行关键操作的确认。本项目着重探讨如何创建一个自定义对话框,并实现对返回键和菜单键的监听功能,以提供更加...
本资源"安卓Android源码——android 自定义对话框.zip"包含了实现自定义对话框的源代码,这对于理解和实践Android应用的界面定制具有重要意义。 首先,我们要理解Android系统提供的默认对话框类`AlertDialog`和`...
在Android开发中,自定义对话框(Dialog)是一种常见的用户界面元素,用于向用户展示临时信息或进行简短交互。自定义对话框可以提供比普通警告对话框更多的灵活性,允许开发者根据应用的品牌和功能需求定制样式和...
本教程将深入讲解如何在Android系统中创建和使用标准对话框以及自定义对话框。 首先,Android系统提供了几种内置的对话框类型,包括AlertDialog、ProgressDialog、DatePickerDialog、TimePickerDialog等。这些...
在Android开发中,自定义对话框(Custom Dialog)是一个常用的功能,它允许开发者根据应用的UI风格和功能需求创建独特的对话框,以提供更丰富的用户体验。这篇博客文章“Android自定义对话框的使用”深入探讨了如何...
在Android应用开发中,自定义对话框是一种常见的需求,它能提供更加个性化和与应用风格一致的用户体验。本文将深入探讨如何实现一个类似开源中国Android客户端登录对话框的自定义对话框。 首先,我们需要理解对话框...
下面将详细介绍如何在Android中实现自定义对话框。 首先,创建自定义对话框通常涉及到以下几个步骤: 1. **定义布局**: - 在`res/layout`目录下创建一个新的XML布局文件,设计对话框的内容。这个布局可以包含...
在Android开发中,自定义对话框(Custom Dialog)是一个常用的功能,它允许开发者根据应用的UI风格和需求创建独特、个性化的提示或加载界面。本文将深入探讨如何在Android中实现一个自定义加载对话框,以及如何实现...