主界面要做出来并不是很难,只是比较麻烦,算是苦力活了,现在开始主要的业务逻辑了
首先从已经规划好的首页第一个功能模块--手机防盗做起
1.整个界面的fragment布局情况
package cn.edu.gzu.BackPP.Fragment;
import cn.edu.gzu.BackPP.Dao.Const;
import cn.edu.gzu.BackPP.activities.BlackNameManagerActivity;
import cn.edu.gzu.BackPP.activities.BlackNumberFunctionManaActivity;
import cn.edu.gzu.BackPP.activities.InCallingSettingActivity;
import cn.edu.gzu.BackPP.activities.R;
import cn.edu.gzu.BackPP.activities.SmsContentBackupActivity;
import cn.edu.gzu.BackPP.service.AddressShowService;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.ViewFlipper;
public class IndexFragment extends Fragment {
private ViewFlipper indexAd;
private ListView indexFunList;
private IndexFragmentManager indexFragmentManager=new IndexFragmentManager();
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
loadResouce();
findAndOprView();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_main_fragment_index,
container, false);
return view;
}
private void findAndOprView(){
indexAd = (ViewFlipper) getActivity().findViewById(R.id.fragment_index_adVf);
indexFragmentManager.oprationViewFlipper(getActivity(),indexAd);
indexFunList = (ListView) getActivity().findViewById(R.id.fragment_index_ListV);
indexFragmentManager.oprationListView(getActivity(),indexFunList);
indexFunList.setOnItemClickListener(new MyListViewItemClickListener());
}
/**
* 自定义listview条目点击监听器
*/
private class MyListViewItemClickListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
switch(position){
case 0://快速进入手机防盗
// enterProtect();
ProtectedPhoneDialog dialog=new ProtectedPhoneDialog(getActivity());
dialog.iniDialog(getActivity());
break;
case 1://来电归属地显示
Intent intent2=new Intent(getActivity(),InCallingSettingActivity.class);
getActivity().startActivity(intent2);
break;
case 2://来电黑名单
Intent intent3=new Intent(getActivity(),BlackNameManagerActivity.class);
getActivity().startActivity(intent3);
break;
case 3://黑名单管理
Intent intent4=new Intent(getActivity(),BlackNumberFunctionManaActivity.class);
getActivity().startActivity(intent4);
break;
case 4://联系人短信备份
Intent intent5=new Intent(getActivity(),SmsContentBackupActivity.class);
getActivity().startActivity(intent5);
break;
}
}
}
}
2.IndexFragmentManager首页空间管理类
package cn.edu.gzu.BackPP.Fragment;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.ViewFlipper;
import cn.edu.gzu.BackPP.activities.R;
public class IndexFragmentManager {
private Animation adEnter;// 动画资源
private Animation adExit;
private static int[] images = { R.drawable.logo_ad1, R.drawable.logo_ad2,
R.drawable.logo_ad3, R.drawable.logo_ad4 };
private static int[] funListImgs = { R.drawable.menu_cellphone_lock,
R.drawable.menu_number_location, R.drawable.menu_innum_heiming,
R.drawable.menu_heiming_manager, R.drawable.menu_numandsms_backup };
private static String[] funListStrs = { "快速进入手机防盗", "来电归属地显示", "来电黑名单",
"黑名单管理", "联系人短信备份" };
private List<Map<String, Object>> itemList;
public IndexFragmentManager(){
}
/**
* 设置iewFlipper自动播放及添加适配器等属性
*/
public void oprationViewFlipper(Context context,ViewFlipper viewfli) {
for (int i = 0; i < images.length; i++) {
ImageView imageView = new ImageView(context);
imageView.setImageResource(images[i]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
viewfli.addView(imageView, new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
}
viewfli.setAutoStart(true);
loadAnimations(context);
viewfli.setInAnimation(adEnter);
viewfli.setOutAnimation(adExit);
viewfli.setFlipInterval(6000);
if (viewfli.isAutoStart() && !viewfli.isFlipping()) {
viewfli.startFlipping();
}
}
/**
* 设置ListView自动播放及添加适配器等属性
*/
public void oprationListView(final Context context,ListView listV) {
itemList = new ArrayList<Map<String, Object>>();
for (int i = 0; i < funListImgs.length; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("image", funListImgs[i]);
map.put("title", funListStrs[i]);
itemList.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(context, itemList,
R.layout.index_funlist_item, new String[] { "image", "title" },
new int[] { R.id.funlist_item_img, R.id.funlist_item_text });
listV.setAdapter(adapter);
}
/**
* 加载动画资源
*/
public void loadAnimations(Context context) {
adEnter = AnimationUtils.loadAnimation(context,
R.anim.ad_enter_lefttoright);
adExit = AnimationUtils.loadAnimation(context, R.anim.ad_exit_righttoleft);
}
}
以上两个类其实可以放在一起的,主要是当初以为分开可以比较方便管理
3.ProtectedPhoneDialog自定义弹出对话框
package cn.edu.gzu.BackPP.Fragment;
import cn.edu.gzu.BackPP.Dao.Const;
import cn.edu.gzu.BackPP.Utils.MD5;
import cn.edu.gzu.BackPP.activities.ProtectedGuide1Activity;
import cn.edu.gzu.BackPP.activities.ProtectedMainActivity;
import cn.edu.gzu.BackPP.activities.R;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class ProtectedPhoneDialog{
private EditText password;//第一次设置密码对话上的组件
private EditText repassword;
private Button confirm;
private Button cancle;
private EditText password2;//不是第一次设置密码对话上的组件
private Button confirm2;
private Button cancle2;
private LayoutInflater mInflater;
public ProtectedPhoneDialog(Context context){
}
public void iniDialog(Context context) {
mInflater=LayoutInflater.from(context);
SharedPreferences sp=context.getSharedPreferences(Const.SHPNAME, Context.MODE_PRIVATE);
String protectps=sp.getString(Const.PROTECTEDSP, null);
if(protectps!=null){
showInputPasswordDialog(context);
}else{
showSetPasswordDialod(context);
}
}
/**
* 弹出对话框提示登录密码
*/
private void showInputPasswordDialog(final Context context){
View dialogView=mInflater.inflate(R.layout.protect_notfirst_dialog, null);
AlertDialog.Builder builder=new AlertDialog.Builder(context);
builder.setTitle("输入防盗密码");
builder.setView(dialogView);
password2=(EditText) dialogView.findViewById(R.id.protect_notfirst_password);
confirm2=(Button) dialogView.findViewById(R.id.protect_notfirst_confirm);
cancle2=(Button) dialogView.findViewById(R.id.protect_notfirst_cancle);
final AlertDialog dialog=builder.create();
confirm2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String password2Text=password2.getText().toString();
String password2Md5=MD5.getData(password2Text);
String password1Md5=context.getSharedPreferences(Const.SHPNAME, Context.MODE_PRIVATE)
.getString(Const.PROTECTEDSP, null);
if(password2Md5.equals(password1Md5)){
Intent intent=new Intent(context,ProtectedMainActivity.class);
context.startActivity(intent);
dialog.dismiss();
}else{
Toast.makeText(context,"密码错误,如您忘记了密码,可进入设置找回!!", Toast.LENGTH_SHORT).show();
}
}
});
cancle2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
/**
* 弹出对话框提示设置密码或登录密码
*/
private void showSetPasswordDialod(final Context context){
View dialogView=mInflater.inflate(R.layout.protect_first_dialog, null);
AlertDialog.Builder builder=new AlertDialog.Builder(context);
builder.setTitle("设置防盗密码");
builder.setView(dialogView);
password=(EditText) dialogView.findViewById(R.id.protect_first_password1);
repassword=(EditText) dialogView.findViewById(R.id.protect_first_password2);
confirm=(Button) dialogView.findViewById(R.id.protect_password_confirm);
cancle=(Button) dialogView.findViewById(R.id.protect_password_cancle);
final AlertDialog dialog=builder.create();
dialog.show();
confirm.setOnClickListener(new View.OnClickListener() {
@SuppressLint("NewApi")
@Override
public void onClick(View v) {
String passwordText=password.getText().toString();
String repasswordText=repassword.getText().toString();
if("".equals(passwordText)||passwordText.isEmpty()){
Toast.makeText(context,"密码不能为空!!!", Toast.LENGTH_SHORT).show();
}else if("".equals(repasswordText)||repasswordText.isEmpty()){
Toast.makeText(context,"密码不能为空!!!", Toast.LENGTH_SHORT).show();
}else if(!passwordText.equals(repasswordText)){
Toast.makeText(context,"两次密码不一致,请重新输入!!!", Toast.LENGTH_SHORT).show();
}else{
String passwordMd5=MD5.getData(passwordText);
SharedPreferences sp=context.getSharedPreferences(Const.SHPNAME, Context.MODE_PRIVATE);
Editor edit=sp.edit();
edit.putString(Const.PROTECTEDSP, passwordMd5);
edit.commit();
dialog.dismiss();
Intent intent=new Intent(context,ProtectedGuide1Activity.class);
context.startActivity(intent);
}
}
});
cancle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
}
}
4.protect_notfirst_dialog.xml布局
<?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="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/protect_notfirst_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dip"
android:paddingLeft="5dip"
android:inputType="textPassword"
android:background="@drawable/dialog_edittext_bg"
android:hint="@string/please_input_password1" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/protect_notfirst_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/protect_password_confirm" />
<Button
android:id="@+id/protect_notfirst_cancle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/protect_password_cancle" />
</LinearLayout>
</LinearLayout>
5.protect_first_dialog.xml布局
<?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="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/protect_first_password1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dip"
android:paddingLeft="5dip"
android:background="@drawable/dialog_edittext_bg"
android:hint="@string/please_input_password1" />
<EditText
android:id="@+id/protect_first_password2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dip"
android:paddingLeft="5dip"
android:background="@drawable/dialog_edittext_bg"
android:hint="@string/input_password_again" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/protect_password_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/protect_password_confirm" />
<Button
android:id="@+id/protect_password_cancle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/protect_password_cancle" />
</LinearLayout>
</LinearLayout>