安卓毕设项目总结(一)校园订餐app

安卓毕设项目总结(一)

写在前面

时间很快,转瞬四年已逝。四年前的现在还在高考场上,意气英发即将迈向未来。四年后的现在,已是离别之时,我坐在考研期间熟悉的座位上,为自己的毕设项目做一个总结,这将是我在安卓之路的起点,能走多远我不得而知,但我一定会一直向前。

登录注册功能

一个月的时间完成了安卓的项目,从一点不会到现在已能勉强独立完成一个项目,学到了很多。大多只停留于应用,既是记录亦是方便今后更深入的思考学习。而最开始学到的便是登录注册功能的实现,包含了我对安卓项目最基本的认知,activity的生命周期、数据传输等都是最基本、最普遍使用的知识点。
先挂一张标准的activity生命周期图。
安卓毕设项目总结(一)校园订餐app_第1张图片##代码流程
在LoginActivity先注册组件,定义每一个布局文件中的控件。在onCreate()里将每一个控件id与声明的命名绑定。regTv = findViewById(R.id.regTv);依然在onCreate(),为按钮设置监听事件。
这里记录按钮触发函数的四种方式。链接: link.

这里采用第四种方式。

LoginActivity

.

package cn.itfxq.foods.activity;
...
public class LoginActivity extends AppCompatActivity {
    //注册组件
    private TextView regTv;
    //登录组件
    private Button loginBtn;
    //用户名称
    private EditText loginNameEt ;
    //密码
    private EditText loginPwdEt ;
    private LoginHandler mLoginsHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置布局文件
        setContentView(R.layout.activity_login);
        mLoginsHandler = new LoginHandler();
        //注册
        regTv = findViewById(R.id.regTv);
        loginBtn=findViewById(R.id.loginBtn);
        loginNameEt = findViewById(R.id.log_name);
        loginPwdEt = findViewById(R.id.log_pwd);
        //登录监听事件
        regTv.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setClass(LoginActivity.this, RegActivity.class);
                //启动
                startActivity(intent);
            }
        });

    }
    //登录系统
    public void loginSys(View view){
        String username = loginNameEt.getText().toString().trim();
        String pwd = loginPwdEt.getText().toString().trim();
        ContentValues values = new ContentValues(); //使用sqlite的话,可以通过ContentValues操作数据库。
        values.put("username",username);            //ContentValues只能存储变量不能存对象
        values.put("password",pwd);                 //这里的定义无用

        if(TextUtils.isEmpty(username) || TextUtils.isEmpty(pwd)){
            Toast.makeText(this,"用户名和密码不能为空",Toast.LENGTH_SHORT).show();
        }else {
            OkHttpClient okHttpClient = new OkHttpClient();
            RequestBody requestBody = new FormBody.Builder()
                    .add("username", username)
                    .add("password",pwd)
                    .build();

            Request request = new Request.Builder()
                    .url(ItFxqConstants.LOGIN_URL)
                    .post(requestBody).build();
            Call call = okHttpClient.newCall(request);
            // 开启异步线程访问网络
            call.enqueue(new Callback() {
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    String res = response.body().string();
                    Message msg = new Message();
                    msg.what = ItFxqConstants.OK_STATUS;
                    msg.obj = res;
                    mLoginsHandler.sendMessage(msg);
                }
                @Override
                public void onFailure(Call call, IOException e) {

                }
            });


        }

    }

    class LoginHandler extends Handler {
        @Override
        public void dispatchMessage(Message msg) {
            super.dispatchMessage(msg);
            switch (msg.what) {
                case ItFxqConstants.OK_STATUS:
                    //解析获取的JSON数据
                    Gson gson = new Gson();
                    //通过反射得到type对象
                    Type listType = new TypeToken<Map>() {
                    }.getType();
                    Map resultMap = gson.fromJson((String)msg.obj, listType);
                    Boolean isSuccess =  (Boolean)resultMap.get("isSuccess");
                    if(isSuccess){
                        //存储登录用户信息
                        Map userMap =  (Map)resultMap.get("user");

                        CommonUtils.storeLoginUser(userMap,LoginActivity.this);
                        CommonUtils.navigateTo(LoginActivity.this,MainActivity.class);
                    }else{
                        String message = (String)resultMap.get("msg");
                        Toast.makeText(LoginActivity.this,message,Toast.LENGTH_SHORT).show();
                    }
                    break;
                case ItFxqConstants.ERROR_STATUS:
                    Toast.makeText(LoginActivity.this,"操作失败",Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }


}

activity_login.xml




    
    

    
        
        
        
        
        
        
    

    
        
        
        
        
    


界面效果如下:
安卓毕设项目总结(一)校园订餐app_第2张图片至此登录界面完成。

后记:这是我的第一版app,做完之后实在是无法满足我的审美,总觉得丑的一批……然鹅,界面布局设计再加制作实在是过于繁琐,再加当时时间确实紧张(中期答辩之后才开始,只有一个月,什么还没做。 (゜▽゜*) )。所以急需一个UI,经过查找搜寻,找到了一个开源框架,不得不说做的不错,用起来还算是比较方便。也帮开发者做一下宣传吧,希望越做越好,越做越轻便。这是我改版后的界面。
安卓毕设项目总结(一)校园订餐app_第3张图片比之前好看了许多,之后的文章对此框架的使用做一个记录吧。

你可能感兴趣的:(android,java)