4、5月份的时候,有位师兄要做毕业设计,大概是想实现一个简单的扫码Android应用,但是师兄只会做UI设计,所以就叫我帮他写代码罢!整体来说项目还是挺简单的,但我对Android开发也是不很熟悉,在实现各功能的时候还是花了些许心思,若大家有更好的实现方法或者改进方法的欢迎提出!
这里的开发环境我用的是Android Studio1.4,对这个新玩意儿,我也很是生涩,对那些Gradle之类的不太懂,反正就管开发。整个应用项目可以在我的资源下载。不过运用代码时注意,我的5英寸1080P屏幕可以比较完美契合,别的屏幕就不敢保证了!
先来看看软件的使用说明吧,打开应用程序就进入一个欢迎界面,界面也就一张背景图片;定时3秒之后,就自动跳转到登陆界面,为了简单,整个应用设计都是单机的,自然没有搭建服务器啊、联网啊啥的,登陆也只是本地登陆;然后就是应用的主界面了,包括扫码、生成二维码、设置等功能都显示在上面。
一、欢迎界面
废话太多,现在就从打开应用的第一个WelcomeActivity开始吧!
这个的布局很简单,只有一张”match_parent”的背景图片而已,在它右上方添加个退出按钮!在Java类里面主要是开启个定时线程,3秒后自动终结这个Activity并跳转到登陆界面;而在3秒内用户点击“退出”按钮的话,就直接执行上面的步骤。Java代码和界面截图如下:
package com.example.tianwei.qrproduct;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class WelcomeActivity extends AppCompatActivity {
private Intent intent = null;
private TextView exit = null;
private Handler mHandler = new Handler();
private MRunnable mRunnable = new MRunnable();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
intent = new Intent(WelcomeActivity.this, LoginActivity.class);
mHandler.postDelayed(mRunnable, 3 * 1000);
initView();
}
private void initView() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null)
actionBar.hide();
exit = (TextView) findViewById(R.id.exit);
exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mHandler.removeCallbacks(mRunnable);
WelcomeActivity.this.startActivity(intent);
WelcomeActivity.this.finish();
}
});
}
private class MRunnable implements Runnable {
@Override
public void run() {
WelcomeActivity.this.startActivity(intent);
WelcomeActivity.this.finish();
}
}
}
二、登陆界面
然后就到登陆界面了,前面说过为了简单起见,整个的设计都没有考虑联机,登陆的时候只是从本地的配置文件中取出账号密码,然后跟用户输入比较,若匹配则登陆成功,进入主界面;若不匹配则提示重新输入。如果第一次使用,可以点击注册新用户。
在这里本地保存用户账号密码时,我使用了简单的SharedPreferences,每对账号密码分别是一对Key-Value(这里不考虑安全性哈)。另外还设置了一个boolean型的上一状态,用来标记上次有否成功登陆,如果上次已经成功登陆,就自动取出其账号密码并填上;否则,就用户自己填啦。当然这样设置有点无聊,其实主要是因为我不想自己测试的时候还要一个一个地填啦,哈哈!不过像微信或QQ那些是不需要跳转到登陆这个界面的,直接在后台验证账号密码,一打开应用就直接登陆成功!
布局也比较简单,具体的大家可以下载项目看。下面的Java代码和截图:
package com.example.tianwei.qrproduct;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class LoginActivity extends AppCompatActivity {
public static final String SHARED_PREF = "account_info";
private Button login = null;
private EditText accountEdit = null;
private EditText pwdEdit = nul