QQ登录界面小例子

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TopWilling/article/details/64693621

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

图片:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/TopWilling/article/details/64693621