您的位置:首页 > 其它

QQ登录界面小例子

2017-03-22 00:54 260 查看

实现功能:使用文件保存登录账号,使用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(
4000
"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>


图片:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: