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>
图片:
相关文章推荐
- Android请求获取Java后端数据,登录界面例子
- Android qq 登录 界面 圆头像
- 我的QQ登录界面与众不同
- Android QQ登录界面绘制代码
- Swing学习----------QQ登录界面制作(一)
- 高仿Windows Phone QQ登录界面实例代码
- QQ登录界面设计
- 转 Android QQ登录验证的小例子
- Spring security使用自定义登录界面且显示登录异常信息的例子
- Lance老师UI系列教程第三课->QQ登录注册界面的实现(android-2012最新版)
- Qt QQ登录界面初记
- swing 模仿QQ登录界面
- PyQt:个性化登录界面模仿QQ登录
- 03-QQ登录界面
- JAVA-GUI练习实例,QQ登录界面
- 模拟QQ登录界面
- iOS中QQ登录界面的制作,登录页面和注册页面的切换
- QTP测试QQ登录界面
- java课程程序设计-----一个类似QQ登录的界面
- 制作精美的QQ聊天界面和登录界面详解