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
原创粉丝点击