android 实战练习 回归手机卫士 二 首页手机防盗 AlertDialog对话框

主界面要做出来并不是很难,只是比较麻烦,算是苦力活了,现在开始主要的业务逻辑了

首先从已经规划好的首页第一个功能模块--手机防盗做起

 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

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>


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值