Android开发之完成登陆界面的数据保存回显操作实例

本文实例讲述了Android开发之完成登陆界面的数据保存回显操作。分享给大家供大家参考,具体如下:

LoginActivity.java:

package com.example.login;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import com.example.login.service.FileService;
public class LoginActivity extends Activity {
  public EditText edit_name,edit_pass;
  public Button btn_login;
  public CheckBox box_remeber;
  public FileService fileService;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    fileService=new FileService(this);
    edit_name=(EditText) findViewById(R.id.edit_name);
    edit_pass=(EditText) findViewById(R.id.edit_pass);
    btn_login=(Button) findViewById(R.id.btn_login);
    box_remeber=(CheckBox) findViewById(R.id.cbx_remember);
    btn_login.setOnClickListener(new MyOnClickListener());
    Map<String, String> map=fileService.readFile("private.txt");
    if(map!=null){
      edit_name.setText(map.get("name"));
      edit_pass.setText(map.get("pass"));
    }
  }
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.login, menu);
    return true;
  }
  class MyOnClickListener implements View.OnClickListener{
    @Override
    public void onClick(View v) {
      int id=v.getId();
      switch (id) {
      case R.id.btn_login:
        String name=edit_name.getText().toString();
        String pass=edit_pass.getText().toString();
        if(TextUtils.isEmpty(name)){
          Toast.makeText(LoginActivity.this, "用户名不能为空", Toast.LENGTH_SHORT).show();
          return;
        }else if(TextUtils.isEmpty(pass)){
          Toast.makeText(LoginActivity.this, "密码不能为空", Toast.LENGTH_SHORT).show();
          return;
        }else{
          if(box_remeber.isChecked()){
            LoginActivity.this.fileService.saveToRom(name, pass, "private.txt");
            Toast.makeText(LoginActivity.this, "用户名和密码已保存", Toast.LENGTH_SHORT).show();
          }else{
            Toast.makeText(LoginActivity.this, "用户名和密码不需要保存", Toast.LENGTH_SHORT).show();
          }
        }
        break;
      default:
        break;
      }
      /*if(id==btn_login.getId()){
        String name=edit_name.getText().toString();
        String pass=edit_pass.getText().toString();
        if(TextUtils.isEmpty(name)){
          Toast.makeText(LoginActivity.this, "用户名不能为空", Toast.LENGTH_SHORT).show();
          return;
        }else if(TextUtils.isEmpty(pass)){
          Toast.makeText(LoginActivity.this, "密码不能为空", Toast.LENGTH_SHORT).show();
          return;
        }else{
          if(box_remeber.isChecked()){
            LoginActivity.this.fileService.saveToRom(name, pass, "private.txt");
            Toast.makeText(LoginActivity.this, "用户名和密码已保存", Toast.LENGTH_SHORT).show();
          }else{
            Toast.makeText(LoginActivity.this, "用户名和密码不需要保存", Toast.LENGTH_SHORT).show();
          }
        }
      }*/
    }
  }
}

FileService.java:

package com.example.login.service;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;
import com.example.login.utils.StreamTools;
import android.content.Context;
public class FileService {
  public Context context;
  public FileService(Context context) {
    this.context = context;
  }
  public boolean saveToRom(String name,String pass,String fileName){
    try{
      FileOutputStream fos=context.openFileOutput(fileName, Context.MODE_PRIVATE);
      String result=name+":"+pass;
      fos.write(result.getBytes());
      fos.flush();
      fos.close();
    }catch(Exception e){
      e.printStackTrace();
      return false;
    }
    return true;
  }
  public Map<String,String> readFile(String fileName){
    Map<String,String> map=null;
    try{
      FileInputStream fis=context.openFileInput(fileName);
      String value=StreamTools.getValue(fis);
      String values[]=value.split(":");
      if(values.length>0){
        map=new HashMap<String, String>();
        map.put("name", values[0]);
        map.put("pass", values[1]);
      }
    }catch(Exception e){
      e.printStackTrace();
    }
    return map;
  }
}

StreamTools.java:

package com.example.login.utils;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
public class StreamTools {
  public static String getValue(FileInputStream fis) throws Exception{
    ByteArrayOutputStream stream=new ByteArrayOutputStream();
    byte[] buffer=new byte[1024];
    int length=-1;
    while((length=fis.read(buffer))!=-1){
      stream.write(buffer,0,length);
    }
    stream.flush();
    stream.close();
    String value=stream.toString();
    return value;
  }
}

login_activity.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  tools:context=".LoginActivity" >
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:orientation="vertical" >
    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >
      <TextView
        android:id="@+id/view_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/text_name" />
      <EditText
        android:id="@+id/edit_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:inputType="textPersonName">
        <requestFocus />
      </EditText>
    </LinearLayout>
    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >
      <TextView
        android:id="@+id/view_pass"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/text_pass" />
      <EditText
        android:id="@+id/edit_pass"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:inputType="textPassword" />
    </LinearLayout>
    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >
      <Button
        android:id="@+id/btn_login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.17"
        android:text="@string/text_login" />
      <CheckBox
        android:id="@+id/cbx_remember"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="80dp"
        android:text="@string/text_rember" />
    </LinearLayout>
  </LinearLayout>
</RelativeLayout>

String.xml:

<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<stringname="app_name">login</string>
<stringname="action_settings">Settings</string>
<stringname="hello_world">Login</string>
<stringname="text_name">用户名:</string>
<stringname="text_pass">密 码:</string>
<stringname="text_login">登陆</string>
<stringname="text_rember">记住密码</string>
</resources>

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Android集成新浪微博第三方登录的方法

    本文实例讲述了Android集成新浪微博第三方登录的方法.分享给大家供大家参考.具体实现方法如下: 1.下载微博的sdk ,导入微博的jar包两个 android-support-v4.jar和weibosdkcore.jar两个包 2.把新浪微博中的demo_src中SDK中的com,导入到项目中 3.用demo中的constants,主要是参数设置,将里面的参数改成自己的参数. 4.编写代码,主要步骤如下: 复制代码 代码如下: // 初始化微博对象 mWeiboAuth = new Wei

  • Android用PopupWindow实现新浪微博的分组信息实例

    最近看到新浪微博顶部栏的微博分组效果很炫,从网上查了一些资料明白原来是用PopupWindow实现的,今天自己也写了一个例子实现了这种效果,希望对大家有帮助. PopupWindow就是弹出窗口的意思,类似windows下面的开始按钮.PopupWindow可以实现浮层效果,而且可以自定义显示位置,出现和退出时的动画. 效果如下: 实现思路: 在一个PopupWindow里放一个ListView,从而来达到分组信息的实现! 具体主要实现代码: group_list.xml: <?xml vers

  • Android仿新浪微博/QQ空间滑动自动播放视频功能

    先来看看效果图 关键代码 1.监听滚动事件 首先要给listview添加setOnScrollListener监听,注意这个监听在recyclerView上是addOnScrollListener,也就是说下面代码同时支持recyclerView. public int firstVisible=0,visibleCount=0, totalCount=0; videoList.setOnScrollListener(new AbsListView.OnScrollListener() { @O

  • 详解Android中App的启动界面Splash的编写方法

    一.Splash界面的作用 用来展现产品的Logo 应用程序初始化的操作 检查应用程序的版本 检查当前应用程序是否合法注册 二.界面的xml定义 写一个布局背景设置为产品的logo图片,再添加一个textview显示版本号. <TextView android:id="@+id/tv_splash_version" android:layout_width="wrap_content" android:layout_height="wrap_cont

  • Android新浪微博下拉刷新(最新消息显示在最上面)

    查看最新消息要用到类似新浪微博下拉刷新 功能!把最新的消息显示在最上面! 代码如下: PullToRefreshListView类代码 复制代码 代码如下: package com.markupartist.android.widget; import java.util.Date; import com.markupartist.android.example.pulltorefresh.R; import android.content.Context; import android.uti

  • Android笔记之:App应用之启动界面SplashActivity的使用

    当前比较成熟一点的应用基本上都会在进入应用之显示一个启动界面.这个启动界面或简单,或复杂,或简陋,或华丽,用意不同,风格也不同.下面来观摩几个流行的应用的启动界面. 1. 货比三家以腾讯qq,新浪weibo,UC浏览器,游戏神庙逃亡等7个应用为例,比比看:(我认为最精美的界面应该是qq2012,虽然只有一张图,基本的应用名称,版本,图标这些信息都有,但是看着舒服,觉得美.) 2. 元素启动界面的本意是以友好用户界面来掩饰后台缓冲加载,让用户用平和等待的心情进入正常应用界面.但是因为启动界面是放在

  • Android仿新浪微博、QQ空间等帖子显示(1)

    TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,实际应用中用的比较多的地方比如聊天时显示表情啊,朋友圈或社区中话题的显示.@好友显示和点击等等,关键字显示不同颜色-- 1.BackgroundColorSpan 背景色 SpannableString spanText = new SpannableString("BackgroundColorSpan"); sp

  • Android仿新浪微博、QQ空间等帖子显示(2)

    一.介绍 这是新浪微博的一个帖子,刚好包括了话题.表情.@好友三种显示.显示方法上篇已经阐述了,就是使用SpannableString.这篇主要介绍显示这种帖子的解析工具类. 二.实现 1.字符串表示和对应正则表达式 话题用##号括起来 表情用[]表示 @好友昵称 借助正则匹配来解析帖子信息. 话题 -> #[^#]+# 表情 -> [[^]]+] @好友 -> @好友昵称 2.写一个通用方法,对spanableString进行正则判断,如果符合要求,则将内容变色 private sta

  • Android仿新浪微博启动界面或登陆界面(1)

    本文为大家分享了Android模仿新浪微博启动界面&登陆界面的具体实现代码,供大家参考,具体内容如下 启动界面 主要有两个功能: 1.加载启动动画 2.判断网络,有者直接进入登陆界面,否则去设置网络 代码较简单,主要采用AlphaAnimation()方法和动画监听器,使一张图片产生渐变动画.在动画启动的时候判断网络,动画结束时完成判断并进入登陆界面. /** * Created by D&LL on 2016/5/25. * 初始页面加载界面 */ public class Splash

  • Android实现带有记住密码功能的登陆界面

    本文实例为大家分享了Android带有记住密码功能的登陆界面实现代码,供大家参考,具体内容如下 1.设计思路 主要采用SharedPreferences来保存用户数据,本Demo没有经过加密,所有一旦Android系统被ROOT的话,其他用户就可以查看用户的私有目录,密码文件就很不安全.所以真正应用在软件上面的,一定要经过加密才保存,可以选择MD5加密. SharedPreferences介绍可以参看这篇博文:http://www.jb51.net/article/84859.htm TextW

随机推荐