篮球比赛计分器

篮球比赛计分器

  • 阶段小结——做一个篮球比赛计分器
    • 创建项目
      • 界面设计
      • 首先将应用配置为使用数据绑定
      • 界面设置为数据绑定类型的Layout
    • 创建ViewModel类
      • 创建一个ScoreViewModel类
      • 在MainActivity中添加声明
    • 对界面进行优化(横屏优化)
    • 本地化

阶段小结——做一个篮球比赛计分器

篮球比赛计分器_第1张图片
本文为学习类文档,通过学习B站up主longway777的视频,如有侵权,请联系博主进行删除
使用之前学习到的所有架构,屏幕旋转,矢量图和语言本地化等

创建项目

界面设计

篮球比赛计分器_第2张图片

首先将应用配置为使用数据绑定

android {
        ...
        dataBinding {
            enabled = true
        }
    }

界面设置为数据绑定类型的Layout

convert to data binding Layout




    
            
    

    

        

        

        

        

        

        

        

        

        

        

        

        

        

创建ViewModel类

创建一个ScoreViewModel类

代码如下

package com.example.score;

import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;

public class ScoreViewModel extends ViewModel {
    private MutableLiveData aTeamScore;
    private MutableLiveData bTeamScore;
    private int aBack,bBack;

    public MutableLiveData getaTeamScore() {
        if(aTeamScore == null){
            aTeamScore = new MutableLiveData<>();
            aTeamScore.setValue(0);
        }
        return aTeamScore;
    }

    public MutableLiveData getbTeamScore() {
        if (bTeamScore == null){
            bTeamScore = new MutableLiveData<>();
            bTeamScore.setValue(0);
        }
        return bTeamScore;
    }

    /*
     *在Edit工具栏中有一个
     * Column Selection Mode
     * 可以实现多行代码同时更改
     * (快捷键Alt+Shift+Insert)
     */

    //A队加分
    public void aTeamAdd(int p){
        aBack = aTeamScore.getValue();
        bBack = bTeamScore.getValue();
        aTeamScore.setValue(aTeamScore.getValue() + p);
    }

    //B队加分
    public void bTeamAdd(int p){
        aBack = aTeamScore.getValue();
        bBack = bTeamScore.getValue();
        bTeamScore.setValue(bTeamScore.getValue() + p);
    }

    //重置分数
    public void reset(){
        aBack = aTeamScore.getValue();
        bBack = bTeamScore.getValue();
        aTeamScore.setValue(0);
        bTeamScore.setValue(0);
    }

    //操作失误撤销
    public void undo(){
        aTeamScore.setValue(aBack);
        bTeamScore.setValue(bBack);
    }

}

在MainActivity中添加声明

  1. 在此之前在gradle中添加依赖
dependencies {
	···
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
}
  1. 在MainActivity中添加声明
package com.example.score;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProvider;

import android.os.Bundle;

import com.example.score.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {
    ScoreViewModel scoreViewModel;
    ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        scoreViewModel = new  ViewModelProvider(this).get(ScoreViewModel.class);
        binding.setScore(scoreViewModel);
        binding.setLifecycleOwner(this);
    }
}

  1. 运行项目,无问题:
    篮球比赛计分器_第3张图片
    篮球比赛计分器_第4张图片
    篮球比赛计分器_第5张图片

对界面进行优化(横屏优化)

篮球比赛计分器_第6张图片
发现横屏界面过于紧密,重新设置Land界面
创建Landscape Variation篮球比赛计分器_第7张图片
可自行按照喜欢来设计
篮球比赛计分器_第8张图片
运行界面如下,无问题:篮球比赛计分器_第9张图片

本地化

篮球比赛计分器_第10张图片
篮球比赛计分器_第11张图片
篮球比赛计分器_第12张图片
将手机设为中文环境
运行观察汉化之后的界面
篮球比赛计分器_第13张图片
横屏
篮球比赛计分器_第14张图片

你可能感兴趣的:(android,移动开发,android,studio,安卓,app)