QQ登录界面小例子
来源:互联网 发布:qq三国js副本奥义 编辑:程序博客网 时间:2024/04/30 16:01
实现功能:使用文件保存登录账号,使用checkbox来确认是否保存密码的逻辑;以及简单的加密
以下是实现代码:
package com.example.loginqq;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStreamReader;import android.os.Bundle;import android.app.Activity;import android.content.SharedPreferences;import android.text.TextUtils;import android.util.Base64;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.Toast;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.EditText;public class MainActivity extends Activity implements OnClickListener, OnCheckedChangeListener { private static final String TAG = null; private Button login; private EditText etQq,etPwd; private CheckBox cbRempwd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews();//视图控件的初始化 initListener();//各个控件的监听方法 //回显 密码 boolean isChecked = getSharedPreferences("config", 0).getBoolean("isChecked",false); cbRempwd.setChecked(isChecked); if (isChecked) { File file = new File(getFilesDir(),"pwd.txt"); if (file.exists()&&file.length()>0) { try { FileInputStream fis = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); String pwd = br.readLine(); String decodePwd = new String(Base64.decode(pwd, Base64.DEFAULT)); etPwd.setText(decodePwd); br.close(); fis.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //回显qq File file = new File(getFilesDir(), "qq.txt"); if (file.exists()&&file.length()>0) { try { FileInputStream fis = new FileInputStream(file); BufferedReader bis = new BufferedReader(new InputStreamReader(fis)); String readLine = bis.readLine(); etQq.setText(readLine); bis.close(); fis.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } private void initListener() { login.setOnClickListener(this); cbRempwd.setOnCheckedChangeListener(this); } private void initViews() { login = (Button) findViewById(R.id.login); etQq = (EditText) findViewById(R.id.et_qq); etPwd = (EditText) findViewById(R.id.et_pwd); cbRempwd = (CheckBox) findViewById(R.id.cb_rempwd); } @Override public void onClick(View v) { String qq = etQq.getText().toString().trim(); String pwd = etPwd.getText().toString().trim(); //判断两者 if (TextUtils.isEmpty(qq) || TextUtils.isEmpty(pwd)) { Toast.makeText(this, "账号或者秘密为空,不能完成登录", Toast.LENGTH_SHORT).show(); return ; } //保存账号 try { File file = new File(getFilesDir(),"qq.txt"); FileOutputStream fos = new FileOutputStream(file); fos.write(qq.getBytes()); fos.close(); Log.d(TAG, "保存qq号成功"); } catch (Exception e) { Log.d(TAG, "保存qq号失败"); e.printStackTrace(); } //帕努单CheckBox是否为选择了 if (cbRempwd.isChecked()) { try { File file = new File(getFilesDir(), "pwd.txt"); FileOutputStream fos = new FileOutputStream(file); //使用简单的加密方式;base64 byte[] encode = Base64.encode(pwd.getBytes(), Base64.DEFAULT); fos.write(encode); fos.close(); Log.d(TAG, "保存秘密成功"); } catch (Exception e) { Log.d(TAG, "保存密码失败"); e.printStackTrace(); } } } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //显示CheckBox的状态 Toast.makeText(MainActivity.this, "checkBox is"+isChecked, 0).show(); //使用SharedPreferences存密码 getSharedPreferences("config", 0).edit().putBoolean("isChecked", isChecked).commit(); }}下面是xml文件```java<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=".MainActivity" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/qq" android:layout_centerHorizontal="true" android:layout_marginTop="80dp" android:id="@+id/qqImage"/> <LinearLayout android:layout_below="@id/qqImage" android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/linear1"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/et_qq" android:hint="账号:"/> <EditText android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/et_pwd" android:hint="密码:"/> </LinearLayout> <LinearLayout android:layout_below="@id/linear1" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linear2" android:orientation="horizontal"> <CheckBox android:id="@+id/cb_rempwd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="记住密码"/> <CheckBox android:layout_marginLeft="40dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="记住密码"/> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/linear2" android:layout_marginTop="20dp" android:id="@+id/login" android:layout_centerHorizontal="true" android:text="登录"/></RelativeLayout>
图片:
0 0
- QQ登录界面小例子
- Android QQ登录验证的小例子
- 转 Android QQ登录验证的小例子
- 转 Android QQ登录验证的小例子
- QQ登录界面
- QQ登录界面
- QQ登录界面布局
- QQ 登录界面布局
- QQ 登录界面布局
- 仿qq登录界面
- QQ登录界面01
- QQ登录界面
- 03-QQ登录界面
- 转载:QQ登录界面
- QQ登录界面
- 模拟QQ登录界面
- QQ界面小程序
- QTP测试QQ登录界面
- Vulkan编程指南翻译 第七章 图形管线 第4节 创建简单的图形管线(下)
- RQNOJ:PID3 / Jam的计数法
- C实现Unix时间戳和本地时间转化
- Java遍历List四种方法的效率对比
- JVM学习03-内存管理和垃圾回收03(之持久代)
- QQ登录界面小例子
- 性能优化
- Unity 把数字,英文图片变成字体
- 机器学习实战--chapter3 决策树
- 自动驾驶大量资料
- Codeforces Round #400 (Div. 1 + Div. 2, combined) C. Molly's Chemicals 区间和、构造、前缀的后缀
- JAVA Eclipse @override报错的解决方法
- iOS 新申请的苹果账号 IAP内购请求的时候获取商品信息为空
- 广义表(C语言,傻瓜式实现)