您当前的位置: 首页 > 

xiangzhihong8

暂无认证

  • 3浏览

    0关注

    1324博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

手机卫士07-设置向导

xiangzhihong8 发布时间:2013-12-07 11:58:59 ,浏览量:3

今天,我们要做的就是给我们的手机防盗这个功能添加一个设置向导的功能啦,指导用户进行一些设置,废话不多说,直接上图,看看我们要做的效果

    

UI不是很好看,各位可以自己修改一下哈

好啦,我们今天主要是把这两个界面写出来,还有把一些逻辑代码写一下

其实这主要就是两个xml文件啦

setup_guide1.xml

  1.     
  2.    
  3.     
  4.    
  5.     
  6.    
  7.     
  8.    
  9.     
  10.    
  11.     
  12.    
  13.     
  14.    
  15.     
  16.    
  17.         
  18.         
  19.         
  20.         
  21.         
  22.         
  23.         
  24.         
  25.         
  26.    
  27.     
  28.    
  29.         
  30.         
  31.                 
  32.                 
  33.         
  34.         
  35.         
  36.         
  37.         
  38.    
  39.         
复制代码
setup_guide2.xml

  1.     
  2.    
  3.     
  4.    
  5.     
  6.    
  7.     
  8.    
  9.         
  10.         
  11.         
  12.         
  13.         
  14.    
  15.     
  16.    
  17.         
  18.         
  19.         
  20.         
  21.         
  22.         
  23.         
  24.         
  25.         
  26.    
  27.     
  28.    
  29.         
  30.         
  31.                 
  32.                 
  33.         
  34.         
  35.         
  36.         
  37.         
  38.         
  39.         
  40.    
  41.         
复制代码
setup_guide3.xml

  1.     
  2.    
  3.     
  4.    
  5.     
  6.    
  7.     
  8.    
  9.     
  10.    
  11.     
  12.    
  13.     
  14.    
  15.     
  16.    
  17.         
  18.         
  19.         
  20.         
  21.         
  22.         
  23.         
  24.         
  25.         
  26.    
  27.     
  28.    
  29.         
  30.         
  31.                 
  32.                 
  33.         
  34.         
  35.         
  36.         
  37.         
  38.    
  39.         
复制代码
setup_guide4.xml

  1.     
  2.    
  3.     
  4.    
  5.     
  6.    
  7.     
  8.    
  9.     
  10.    
  11.         
  12.         
  13.         
  14.         
  15.         
  16.         
  17.         
  18.         
  19.         
  20.    
  21.     
  22.    
  23.         
  24.         
  25.                 
  26.                 
  27.         
  28.         
  29.         
  30.         
  31.         
  32.         
  33.         
  34.    
  35.         
复制代码
上面四个xml文件,就是我们要做的向导的界面啦,其中都用到了样式的定义,各位如果有什么不明白的,可以回头再看一下我们之前写的,毕竟是一步接一步的,肯定要先把前面的弄清楚的,因为后面还会用到那些知识点的。我们今天主要是把前两个页面的逻辑加上,后面两个页面的逻辑在明天再加,因为第三个页面,要涉及到读取用户的联系人这一非常常用的操作,所以单独来讲一下我们的设置向导是在用户第一次打开我们的手机防盗这个功能时才启动的,所以我们还要在手机防盗这个功能的界面里面加一些逻辑,好,废话不多说, 直接上代码com.xiaobin.security.ui.LostProtectedActivity
  1. package com.xiaobin.security.ui;
  2. import android.app.Activity;
  3. import android.app.Dialog;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.content.SharedPreferences;
  7. import android.content.SharedPreferences.Editor;
  8. import android.os.Bundle;
  9. import android.view.View;
  10. import android.view.View.OnClickListener;
  11. import android.widget.Button;
  12. import android.widget.EditText;
  13. import android.widget.Toast;
  14. import com.xiaobin.security.R;
  15. import com.xiaobin.security.utils.MD5Encoder;
  16. public class LostProtectedActivity extends Activity implements OnClickListener
  17. {
  18.         private SharedPreferences sp;
  19.         private Dialog dialog;
  20.         private EditText password;
  21.         private EditText confirmPassword;
  22.         
  23.         @Override
  24.         protected void onCreate(Bundle savedInstanceState)
  25.         {
  26.                 super.onCreate(savedInstanceState);
  27.                 
  28.                 sp = getSharedPreferences("cofig", Context.MODE_PRIVATE);
  29.                 
  30.                 if(isSetPassword())
  31.                 {
  32.                         showLoginDialog();
  33.                 }
  34.                 else
  35.                 {
  36.                         showFirstDialog();
  37.                 }
  38.         }
  39.         
  40.         private void showLoginDialog()
  41.         {
  42.                 dialog = new Dialog(this, R.style.MyDialog);
  43.                 View view = View.inflate(this, R.layout.login_dialog, null);
  44.                 password = (EditText) view.findViewById(R.id.et_protected_password);
  45.                 Button yes = (Button) view.findViewById(R.id.bt_protected_login_yes);
  46.                 Button cancel = (Button) view.findViewById(R.id.bt_protected_login_no);
  47.                 yes.setOnClickListener(this);
  48.                 cancel.setOnClickListener(this);
  49.                 dialog.setContentView(view);
  50.                 dialog.setCancelable(false);
  51.                 dialog.show();
  52.         }
  53.         private void showFirstDialog()
  54.         {
  55.                 dialog = new Dialog(this, R.style.MyDialog);
  56.                 //dialog.setContentView(R.layout.first_dialog);
  57.                 View view = View.inflate(this, R.layout.first_dialog, null);//这种填充布局的方式比较方便,峭用拿到一个LayoutInflate对象
  58.                 password = (EditText) view.findViewById(R.id.et_protected_first_password);
  59.                 confirmPassword = (EditText) view.findViewById(R.id.et_protected_confirm_password);
  60.                 Button yes = (Button) view.findViewById(R.id.bt_protected_first_yes);
  61.                 Button cancel = (Button) view.findViewById(R.id.bt_protected_first_no);
  62.                 yes.setOnClickListener(this);
  63.                 cancel.setOnClickListener(this);
  64.                 dialog.setContentView(view);
  65.                 dialog.setCancelable(false);
  66.                 dialog.show();
  67.         }
  68.         private boolean isSetPassword()
  69.         {
  70.                 String pwd = sp.getString("password", "");
  71.                 if(pwd.equals("") || pwd == null)
  72.                 {
  73.                         return false;
  74.                 }
  75.                 return true;
  76.         }
  77.         
  78.         private boolean isSetupGuide()
  79.         {
  80.                 return sp.getBoolean("setupGuide", false);
  81.         }
  82.         @Override
  83.         public void onClick(View v)
  84.         {
  85.                 switch(v.getId())
  86.                 {
  87.                         case R.id.bt_protected_first_yes : 
  88.                                 String fp = password.getText().toString().trim();
  89.                                 String cp = confirmPassword.getText().toString().trim();
  90.                                 if(fp.equals("") || cp.equals(""))
  91.                                 {
  92.                                         Toast.makeText(this, "密码不能为空", Toast.LENGTH_SHORT).show();
  93.                                         return;
  94.                                 }
  95.                                 else 
  96.                                 {
  97.                                         if(fp.equals(cp))
  98.                                         {
  99.                                                 Editor editor = sp.edit();
  100.                                                 editor.putString("password", MD5Encoder.encode(fp));
  101.                                                 editor.commit();
  102.                                                 dialog.dismiss();
  103.                                                 
  104.                                                 if(!isSetupGuide())
  105.                                                 {
  106.                                                         finish();
  107.                                                         Intent intent = new Intent(this, SetupGuide1Activity.class);
  108.                                                         startActivity(intent);
  109.                                                 }
  110.                                         }
  111.                                         else
  112.                                         {
  113.                                                 Toast.makeText(this, "两次密码不相同", Toast.LENGTH_SHORT).show();
  114.                                                 return;
  115.                                         }
  116.                                 }
  117.                                 dialog.dismiss();
  118.                                 break;
  119.                                 
  120.                         case R.id.bt_protected_first_no : 
  121.                                 dialog.dismiss();
  122.                                 finish();
  123.                                 break;
  124.                                 
  125.                         case R.id.bt_protected_login_yes : 
  126.                                 String pwd = password.getText().toString().toString();
  127.                                 if(pwd.equals(""))
  128.                                 {
  129.                                         Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();
  130.                                 }
  131.                                 else
  132.                                 {
  133.                                         String str = sp.getString("password", "");
  134.                                         if(MD5Encoder.encode(pwd).equals(str))
  135.                                         {
  136.                                                 if(!isSetupGuide())
  137.                                                 {
  138.                                                         finish();
  139.                                                         Intent intent = new Intent(this, SetupGuide1Activity.class);
  140.                                                         startActivity(intent);
  141.                                                 }
  142.                                                 dialog.dismiss();
  143.                                         }
  144.                                         else
  145.                                         {
  146.                                                 Toast.makeText(this, "密码错误", Toast.LENGTH_SHORT).show();
  147.                                         }
  148.                                 }
  149.                                 break;
  150.                                 
  151.                         case R.id.bt_protected_login_no : 
  152.                                 dialog.dismiss();
  153.                                 finish();
  154.                                 break;
  155.                                 
  156.                         default : 
  157.                                 break;
  158.                 }
  159.         }
  160. }
复制代码
com.xiaobin.security.ui.SetupGuide1
  1. package com.xiaobin.security.ui;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. import com.xiaobin.security.R;
  9. public class SetupGuide1Activity extends Activity implements OnClickListener
  10. {
  11.         private Button next;
  12.         
  13.         @Override
  14.         protected void onCreate(Bundle savedInstanceState)
  15.         {
  16.                 super.onCreate(savedInstanceState);
  17.                 setContentView(R.layout.setup_guide1);
  18.                 
  19.                 next = (Button) findViewById(R.id.bt_guide_next);
  20.                 next.setOnClickListener(this);
  21.         }
  22.         @Override
  23.         public void onClick(View v)
  24.         {
  25.                 switch(v.getId())
  26.                 {
  27.                         case R.id.bt_guide_next : 
  28.                                 Intent intent = new Intent(this, SetupGuide2Activity.class);
  29.                                 finish();
  30.                                 startActivity(intent);
  31.                                 //这个是定义activity切换时的动画效果的
  32.                                 overridePendingTransition(R.anim.alpha_in, R.anim.alpha_out);
  33.                                 break;
  34.                                 
  35.                         default : 
  36.                                 break;
  37.                 }
  38.         }
  39. }
复制代码
大家可以看到,我们在上面切换activity时,加了一些效果,其实就是通过overridePendingTransition这个方法来实现的,所以大家以后想让自己的activity之间切换,多一些动态的效果,就可以用这个方法啦。上面只是我自己定义的一个简单的动画文件,要定义一个动画文件也很简单,只要在res下面新建一个anim目录,然后在里面新建一些动画的xml就行啦下面是我们上面的那两个xml动画alpha_in.xml
  1.     
复制代码
alpha_out.xml有一个地方要注意的,我们新建动画的xml时,一定要把那个命名空间http://schemas.android.com/apk/res/android指定好,不然就不行的 好啦,现在我们把第二个guide的逻辑代码也写一下com.xiaobin.security.ui.SetupGuide2
  1. package com.xiaobin.security.ui;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.content.SharedPreferences;
  6. import android.content.SharedPreferences.Editor;
  7. import android.os.Bundle;
  8. import android.telephony.TelephonyManager;
  9. import android.view.View;
  10. import android.view.View.OnClickListener;
  11. import android.widget.Button;
  12. import android.widget.CheckBox;
  13. import android.widget.CompoundButton;
  14. import android.widget.CompoundButton.OnCheckedChangeListener;
  15. import com.xiaobin.security.R;
  16. public class SetupGuide2Activity extends Activity implements OnClickListener
  17. {
  18.         private Button bt_bind;
  19.         private Button bt_next;
  20.         private Button bt_perviout;
  21.         private CheckBox cb_bind;
  22.         private SharedPreferences sp;
  23.         
  24.         @Override
  25.         protected void onCreate(Bundle savedInstanceState)
  26.         {
  27.                 super.onCreate(savedInstanceState);
  28.                 setContentView(R.layout.setup_guide2);
  29.                 
  30.                 sp = getSharedPreferences("config", Context.MODE_PRIVATE);
  31.                 
  32.                 bt_bind = (Button) findViewById(R.id.bt_guide_bind);
  33.                 bt_next = (Button) findViewById(R.id.bt_guide_next);
  34.                 bt_perviout = (Button) findViewById(R.id.bt_guide_pervious);
  35.                 bt_bind.setOnClickListener(this);
  36.                 bt_next.setOnClickListener(this);
  37.                 bt_perviout.setOnClickListener(this);
  38.                 
  39.                 cb_bind = (CheckBox) findViewById(R.id.cb_guide_check);
  40.                 //初始化CheckBox状态
  41.                 String sim = sp.getString("simSerial", null);
  42.                 if(sim != null)
  43.                 {
  44.                         cb_bind.setText("已经绑定");
  45.                         cb_bind.setChecked(true);
  46.                 }
  47.                 else
  48.                 {
  49.                         cb_bind.setText("没有绑定");
  50.                         cb_bind.setChecked(false);
  51.                 }
  52.                 cb_bind.setOnCheckedChangeListener(new OnCheckedChangeListener()
  53.                 {
  54.                         @Override
  55.                         public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
  56.                         {
  57.                                 //那个解除绑定的我还没做的呢,各位可以自己去完成,就是把那个SharedPreferences里面的值设置一下就行啦
  58.                                 if(isChecked)
  59.                                 {
  60.                                         cb_bind.setText("已经绑定");
  61.                                         setSimInfo();
  62.                                 }
  63.                                 else
  64.                                 {
  65.                                         cb_bind.setText("没有绑定");
  66.                                 }
  67.                         }
  68.                 });
  69.         }
  70.         @Override
  71.         public void onClick(View v)
  72.         {
  73.                 switch(v.getId())
  74.                 {
  75.                         case R.id.bt_guide_bind : 
  76.                                 setSimInfo();
  77.                                 cb_bind.setText("已经绑定");
  78.                                 cb_bind.setChecked(true);
  79.                                 break;
  80.                                 
  81.                         case R.id.bt_guide_next : 
  82.                                 Intent intent = new Intent(this, SetupGuide3Activity.class);
  83.                                 finish();
  84.                                 startActivity(intent);
  85.                                 //这个是定义activity切换时的动画效果的
  86.                                 overridePendingTransition(R.anim.alpha_in, R.anim.alpha_out);
  87.                                 break;
  88.                         case R.id.bt_guide_pervious : 
  89.                                 
  90.                                 Intent i = new Intent(this, SetupGuide1Activity.class);
  91.                                 finish();
  92.                                 startActivity(i);
  93.                                 //这个是定义activity切换时的动画效果的
  94.                                 overridePendingTransition(R.anim.alpha_in, R.anim.alpha_out);
  95.                                 break;
  96.                                 
  97.                         default : 
  98.                                 break;
  99.                 }
  100.         }
  101.         
  102.         private void setSimInfo()
  103.         {
  104.                 TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
  105.                 String simSerial = telephonyManager.getSimSerialNumber();//拿到sim卡的序列号,是唯一的
  106.                 Editor editor = sp.edit();
  107.                 editor.putString("simSerial", simSerial);
  108.                 editor.commit();
  109.         }
  110. }
复制代码
好,现在只要去AndroidManifest文件里面注册一下这两个activity就可以看看我们的设置向导啦 今天的代码就到这里了,有什么不明白的可以留言,或看一下我们之前的写的代码,明天我们将会讲解系统联系人的获取  Security_07设置向导.rar (929.18 KB, 下载次数: 145) 
关注
打赏
1482932726
查看更多评论
立即登录/注册

微信扫码登录

0.0507s