经过前面的校园招聘,顺利拿下offer,现在又可以继续学习了
需求:今天我们主要实现手机安全卫士中手机防盗的UI界面的实现
上篇
1、设置密码对话框;
2、密码登录框;
alertdialog里的视图布局使用自定义完成
代码如下
dialog_setup_password.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dip"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="50dip"
android:background="#66ff6600"
android:gravity="center"
android:text="设置密码"
android:textColor="@android:color/black"
android:textSize="22sp" />
<EditText
android:id="@+id/et_setup_password"
android:layout_width="280dip"
android:layout_height="wrap_content"
android:hint="请输入密码"
android:inputType="textPassword" />
<EditText
android:id="@+id/et_setup_confim_password"
android:layout_width="280dip"
android:layout_height="wrap_content"
android:hint="请再次输入密码"
android:inputType="textPassword" />
<LinearLayout
android:layout_width="300dip"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<Button
android:id="@+id/confim"
android:layout_width="140dip"
android:layout_height="wrap_content"
android:text="确定" />
<Button
android:id="@+id/cancel"
android:layout_width="140dip"
android:layout_height="wrap_content"
android:text="取消" />
</LinearLayout>
</LinearLayout>
dialog_entry_password.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dip"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="50dip"
android:background="#66ff6600"
android:gravity="center"
android:text="设置密码"
android:textColor="@android:color/black"
android:textSize="22sp" />
<EditText
android:id="@+id/et_entry_password"
android:layout_width="280dip"
android:layout_height="wrap_content"
android:hint="请输入密码"
android:inputType="textPassword" />
<LinearLayout
android:layout_width="300dip"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
<Button
android:id="@+id/entry_confim"
android:layout_width="140dip"
android:layout_height="wrap_content"
android:text="确定" />
<Button
android:id="@+id/entry_cancel"
android:layout_width="140dip"
android:layout_height="wrap_content"
android:text="取消" />
</LinearLayout>
</LinearLayout>
第二步:
创建封装计本函数
1、showLostFindDialog(); 一个进入手机防盗的函数
2、showEnterDialog(); 用户已经设置过安全密码是进入输入密码的界面函数
3、showSetupPassword(); 用户未设置安全密码时进入设置密码的界面函数
函数实现如下
/**
* 判断是否有前面已经设置安全密码
*/
private void showLostFindDialog() {
if (isSetupPassword()) {
/*已经设计安全密码,弹出对话框,输入密码*/
showEnterDialog();
} else {
/*未设置密码,弹出设置密码的对话框*/
showSetupPassword();
}
}
/**
* 输入安全面膜对话框
*/
private void showEnterDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(HomeActivity.this);
/*Dialog加载自定义布局文件*/
View view = View.inflate(HomeActivity.this, R.layout.dialog_entry_password, null);
etEntryPassword = (EditText) view.findViewById(R.id.et_entry_password);
entryCancel = (Button) view.findViewById(R.id.entry_cancel);
entryConfirm = (Button) view.findViewById(R.id.entry_confim);
/*设置按钮点击事件*/
entryCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
entryConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*取出密码*/
String entryPassword = etEntryPassword.getText().toString().trim();
String savePassword = sharedPreferences.getString("password", "");
if (TextUtils.isEmpty(entryPassword)) {
/*如果密码为空*/
Toast.makeText(HomeActivity.this, "密码为空", Toast.LENGTH_LONG).show();
return;
}
if (entryPassword.equals(savePassword)) {
/*输入的密码是前面保存的密码,吧对话框清除,进入主页面*/
dialog.dismiss();
Log.i(TAG, "吧对话框消掉,进入主页面");
} else {
Toast.makeText(HomeActivity.this, "密码错误", Toast.LENGTH_LONG).show();
etEntryPassword.setText("e");
return;
}
}
});
// builder.setView(view);
// dialog = builder.show();
/*向低版本兼容做处理*/
dialog = builder.create();
dialog.setView(view, 0, 0, 0, 0);
dialog.show();
}
/**
* 判断是否设置密码
*
* @return 已设置返回true 否则返回false
*/
private boolean isSetupPassword() {
String password = sharedPreferences.getString("password", null);
/*有密码返回true*/
/* if (TextUtils.isEmpty(password)) {
return true;
}
return false;*/
return !TextUtils.isEmpty(password);
}
在HomeActivity的onCreate函数中进行调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_home);
/*activity创建的时候就获得密码*/
sharedPreferences = getSharedPreferences("config", MODE_PRIVATE);
gv_list_home = (GridView) this.findViewById(R.id.gv_list_home);
myAdapter = new MyAdapter();
gv_list_home.setAdapter(myAdapter);
/*设置主页面功能图标的的点击事件*/
gv_list_home.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 8: {/*进入设置中心*/
Intent intent = new Intent(HomeActivity.this, SettingActivity.class);
startActivity(intent);
break;
}
case 0: {
/*手机防盗*/
showLostFindDialog();
}
default:
break;
}
}
});
}
如下便实现了需求所需的功能