Android开发登陆案例

layout

<?xml version="1.0"?> -<LinearLayout android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"> <EditText android:id="@+id/et_username" android:layout_height="wrap_content" android:layout_width="fill_parent" android:hint="@string/input_username"/> <EditText android:id="@+id/et_password" android:layout_height="wrap_content" android:layout_width="fill_parent" android:hint="@string/input_password" android:inputType="textPassword" android:layout_marginBottom="10dp" android:layout_marginTop="10dp"/> -<RelativeLayout android:layout_height="wrap_content" android:layout_width="fill_parent"> <CheckBox android:id="@+id/cb_rem" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/rem_password" android:layout_alignParentLeft="true" android:layout_centerVertical="true"/> <Button android:id="@+id/bt_login" android:paddingRight="50dp" android:paddingLeft="50dp" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/login" android:layout_centerVertical="true" android:layout_alignParentRight="true"/> </RelativeLayout> </LinearLayout>

java代码

package com.itheima.login; import java.util.Map; import com.itheima.login.util.UserInfoUtil; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private EditText et_username; private EditText et_password; private CheckBox cb_rem; private Button bt_login; private Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = this; et_username = (EditText) findViewById(R.id.et_username); et_password = (EditText) findViewById(R.id.et_password); cb_rem = (CheckBox) findViewById(R.id.cb_rem); bt_login = (Button) findViewById(R.id.bt_login); //b.设置按钮的点击事件 bt_login.setOnClickListener(this); //f.回显用户名密码 ?? Map<String, String> map = UserInfoUtil.getUserInfo_android(mContext);//获取用户名密码 if(map != null){ String username = map.get("username"); String password = map.get("password"); et_username.setText(username);//设置用户名 et_password.setText(password); cb_rem.setChecked(true);//设置复选框选中状态 } } private void login(){ //c.在onclick方法中,获取用户输入的用户名密码和是否记住密码 String username = et_username.getText().toString().trim(); String password = et_password.getText().toString().trim(); boolean isrem = cb_rem.isChecked(); //d.判断用户名密码是否为空,不为空请求服务器(省略,默认请求成功) if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){ Toast.makeText(mContext, "用户名密码不能为空", Toast.LENGTH_SHORT).show(); return ; } //请求服务器,后面讲。。。。。。。。。。 //e.判断是否记住密码,如果记住,将用户名密码保存本地。???? if(isrem){ boolean result = UserInfoUtil.saveUserInfo_android(mContext,username,password); if(result){ Toast.makeText(mContext, "用户名密码保存成功", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(mContext, "用户名密码保存失败", Toast.LENGTH_SHORT).show(); } }else{ Toast.makeText(mContext, "无需保存", Toast.LENGTH_SHORT).show(); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_login: login(); break; default: break; } } }

新建包的代码

package com.itheima.login.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import android.content.Context; public class UserInfoUtil { //保存用户名密码 public static boolean saveUserInfo_android(Context context,String username, String password) { try{ String userinfo = username + "##"+ password;//封装用户名密码 //得到私有目录下一个文件写入流; name : 私有目录文件的名称 mode: 文件的操作模式, 私有,追加,全局读,全局写 FileOutputStream fileOutputStream = context.openFileOutput("userinfo.txt", Context.MODE_PRIVATE); fileOutputStream.write(userinfo.getBytes());//将用户名密码写入文件 fileOutputStream.close(); return true; }catch (Exception e) { e.printStackTrace(); } return false; } //获取用户名密码 public static Map<String ,String> getUserInfo_android(Context context){ try{ //通过context对象获取一个私有目录的文件读取流 FileInputStream fileInputStream = context.openFileInput("userinfo.txt"); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); //读取一行中包含用户密码,需要解析 String readLine = bufferedReader.readLine(); String[] split = readLine.split("##"); HashMap<String, String> hashMap = new HashMap<String ,String>(); hashMap.put("username", split[0]); hashMap.put("password", split[1]); bufferedReader.close(); fileInputStream.close(); return hashMap; }catch (Exception e) { e.printStackTrace(); } return null; } //保存用户名密码 public static boolean saveUserInfo(Context context,String username, String password) { try{ String userinfo = username + "##"+ password;//封装用户名密码 // String path = "/data/data/com.itheima.login/";//指定保存的路径 //通过Context对象获取私有目录的一个路径 String path = context.getFilesDir().getPath(); System.out.println("...............:"+path); File file = new File(path,"userinfo.txt");//创建file FileOutputStream fileOutputStream = new FileOutputStream(file);//创建文件写入流 fileOutputStream.write(userinfo.getBytes());//将用户名密码写入文件 fileOutputStream.close(); return true; }catch (Exception e) { e.printStackTrace(); } return false; } //获取用户名密码 public static Map<String ,String> getUserInfo(Context context){ try{ // String path = "/data/data/com.itheima.login/";//指定保存的路径 //通过Context对象获取私有目录的一个路径 String path = context.getFilesDir().getPath(); System.out.println("...............:"+path); File file = new File(path,"userinfo.txt");//创建file FileInputStream fileInputStream = new FileInputStream(file); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); //读取一行中包含用户密码,需要解析 String readLine = bufferedReader.readLine(); String[] split = readLine.split("##"); HashMap<String, String> hashMap = new HashMap<String ,String>(); hashMap.put("username", split[0]); hashMap.put("password", split[1]); bufferedReader.close(); fileInputStream.close(); return hashMap; }catch (Exception e) { e.printStackTrace(); } return null; } }

我存在的问题与修正

*alt+enter------补全抽象方法*/
/*获取全局变量*****怎么做 fied*/
/*如何格式化代码*/
/*点击事件用全局语句*/
/*很多程序都用到contest,所以在类中定义对象吧!赋值this,以后toast用到直接调用*/
/*ctrl+1 封装临时自己打的类,crate class*/
/*创建方法*/
/*保存文件*/

1.保存到私有目录下

2.保存路径

3.创建一个File对象

4.再创建一个FileOotputStream对象,传File进去

/*私开包,斯开方法*/
/*保存文件*/
1.保存到私有目录下 /date/date/包名/
2.保存路径(特殊)
3.创建一个File对象(路径,文件类型加名字)
4.再创建一个FileOotputStream对象,传File进去,其实就是创建文件写入流
5.对读取这一块直接 try一下 catch输出信息(什么stake)
6.FS调用write方法,传字节流进去。传字节进去,而且自能传一个,怎么办?
用字符串+ 处理 那混合了怎么办?
加两个特殊字符进去##(不能用正则表达式的字符)。后面再用 分割字符串的方法分开
7.字符串调用自身 getbyte()方法
8.把流关闭 FS调用close()方法
9.最后return ture 告诉保存成功
/*Map?*/
/*toast*/
1.Toast.makeText(mtext,"Stri ng",Toast.选时间).show
2.mcontext=this ,就是创建一个数据
/*什么时候回显*/
1.程序一加载就回显示
2.是不是要读取文件才能读取
3.读的路径一样,创建的文件一样
4.创建一个输入字节流 FIS(F)
4.用户名,密码都是一行,怎么读取一行
创建BR对象(new IR(F))
5.创建字符串读取字节 BR。RL()
6.分割字符串的使用
7.集合的使用 哈希表
8.关闭流

以上所述是小编给大家介绍的Android开发登陆案例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-10-30 08:47:19

Android开发登陆案例的相关文章

Android开发登陆案例_Android

layout <?xml version="1.0"?> -<LinearLayout android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin&qu

app-android开发登陆模块设计思路

问题描述 android开发登陆模块设计思路 假如我设计一个类似贴吧的app,不需要登陆也能浏览帖子,但是有些功能,比如回复,则需要检测是否登陆.这样的业务逻辑用什么来做比较方便? 解决方案 自己写一个登录和判断是否登录的方法:如果有些功能必须要在登录的情况下才有: 就先在这个功能里调用判断是否登录的方法:如果没有登录,返回的是false,则调用登录方法进行登录:若返回的是true,则直接进行其他功能的操作. 以上只是为个人的想法,请多多指教! 解决方案二: 写一个公共的方法,只用来判断是否已经

《Android开发案例驱动教程》

<Android开发案例驱动教程>   作者:关东升,赵志荣Java或C++程序员转变成为Android程序员 采用案例驱动模式展开讲解知识点,即介绍案例->案例涉及技术->展开知识点->总结的方式 本书作者从事多年一线开发和培训,讲解知识点力求细致,深入浅出 目    录 前言 第1章  Android操作系统概述 1 1.1  Android历史介绍 1 1.2  Android架构 1 1.3  Android平台介绍 2 1.4  现有智能手机操作系统比较 4 第2章

《Android 应用案例开发大全(第3版)》——第1.3节Android开发环境的搭建

1.3 Android开发环境的搭建 本节主要讲解基于Eclipse的Android开发环境的搭建(包括SDK的下载和SDK的配置).模拟器的创建和运行,以及Android开发环境搭建好之后,对其开发环境进行测试并创建第一个Android应用程序Hello Android等相关知识. 1.3.1 Android SDK的下载 前面已经对Android平台进行了简单的介绍,从本小节开始,将带领读者逐步搭建自己的开发环境.Android SDK是开发Android应用程序的基础开发环境,其本身是免费

《Android 3D 游戏案例开发大全》——6.4节主控制类——TXZActivity类的开发

6.4 主控制类--TXZActivity类的开发 Android 3D 游戏案例开发大全 Android程序中,Activity是最重要的类之一.在本游戏中,TXZActivity继承自Activity类,为本游戏的主控制类,本节将具体介绍TXZActivity的开发,其具体步骤如下. (1)主控制类代码非常多,首先搭建主控制类的框架,以帮助读者理解,主控制类框架代码如下. 1 package com.bn.txz; //声明包 2 --//此处省略了本类中导入类的代码,读者可以自行查阅随书光

《Android 3D 游戏案例开发大全》——6.6节游戏界面相关类

6.6 游戏界面相关类 Android 3D 游戏案例开发大全 前一小节为读者介绍了辅助界面相关类,本小节将对游戏界面相关类进行介绍,首先介绍游戏界面的各个组成部分,然后介绍游戏整体界面的开发,逐步完成对游戏界面的开发,下面就对这些类的开发进行详细介绍. 6.6.1 顶点数据管理者VertexDataManager 本小节为读者介绍的是整个游戏过程中所有物体顶点数据的管理者VertexDataManager,具体开发步骤如下. (1)首先为读者介绍的是本类主要框架的开发,其代码如下. 1 pac

《Android 应用案例开发大全(第二版)》——1.3节Android开发环境的搭建

1.3 Android开发环境的搭建 Android 应用案例开发大全(第二版) 本节主要讲解基于Eclipse的Android开发环境的搭建,模拟器的创建和运行,以及如何应用DDMS进行程序的调试. 1.3.1 Android SDK的安装及环境变量的配置 Android使用的编程语言是时下最流行的Java高级语言,Java的跨平台性和开源性,极大地促进了Android平台的发展. 首先要安装Java的JDK,并且正确地配置系统的环境变量(基于Windows操作系统).具体步骤如下. (1)

《Android 3D 游戏案例开发大全》——6.5节辅助界面相关类

6.5 辅助界面相关类 Android 3D 游戏案例开发大全 前一小节介绍了主控制类TXZActivity,本小节将对该游戏的辅助界面相关类进行介绍,该游戏的辅助界面主要是欢迎界面TXZWelcomeView类.菜单界面TXZMenuView类.设置界面TXZSetView类.帮助界面TXZHelpView类.选关界面TXZSelectView类,以及关于界面TXTAboutView类,下面就对这些类的开发进行详细介绍. 6.5.1 欢迎界面类TXZWelcomeView 欢迎界面是进入游戏的

Android开发之完成登陆界面的数据保存回显操作实例_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