日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阶段小练—篮球比赛计分器

發(fā)布時間:2024/3/13 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阶段小练—篮球比赛计分器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

階段性回顧

回顧內(nèi)容:
VieModel Screen Orientation
LiveData Localization
DataBinding Vector Drawable

UI界面


由上而下解析:

第一行兩個textView 控件用于顯示隊伍 A和隊伍B
第二行兩個textView控件用于顯示兩隊的比分
中間三行Button控件用于點擊增加分?jǐn)?shù)
最后一行為兩個矢量圖標(biāo)/圖片按鈕,左邊用于后退一步加分操作,右邊將分?jǐn)?shù)初始化為 0:0

界面字體背景優(yōu)化

為方便調(diào)節(jié)字體的大小,可以創(chuàng)建需要的資源

分別創(chuàng)建了三種字體大小不同的資源,分別供應(yīng)于 隊伍名、比分、按鈕的字體大小使用

為區(qū)別隊伍的劃分,改變 兩隊伍比分的字體顏色和背景

字體顏色改變:textColor
背景改變 :background

調(diào)用矢量圖形的方法

res -> new -> Vector Asset

注意:使用矢量圖形需要在 Gradle 中聲明一句話,用于上下兼容,因為在低于5.0以下不支持矢量圖

解決方法:在Gradle 中加入上圖中的話

android.defaultConfig.vectorDrawables.useSupportLibrary = true


同時,由于一會兒需要用到DataBinding,所以添加

dataBinding{
enabled true
}

最后Sync一下,不出現(xiàn)紅色則沒有問題

注意點: 調(diào)用 imageView或imageButton時,我們需要增加參數(shù):contentDescription
這個參數(shù)的意義在于照顧一些生理功能有缺陷的人,如果圖片復(fù)雜,用戶色盲色弱,則這個參數(shù)可以供系統(tǒng)讀出來,加強用戶體驗。例如中間幾行的按鈕讀的話,就可以是 加1 加2、、、、

代碼部分

MyViewModel

創(chuàng)建一個New Class : MyViewModel
繼承于 ViewModel

package com.example.score;import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel;public class MyViewModel extends ViewModel { //繼承于ViewModelprivate MutableLiveData<Integer> aTeamScore; //定義變量 記錄隊伍的分?jǐn)?shù)private MutableLiveData<Integer> bTeamScore;private int aBack,bBack; //存放前一次的分?jǐn)?shù) //隊伍Apublic MutableLiveData<Integer> getaTeamScore() {if(aTeamScore == null) //如果為空,則創(chuàng)建一個,并初始化為0{aTeamScore = new MutableLiveData<>();aTeamScore.setValue(0);}return aTeamScore;} //隊伍Bpublic MutableLiveData<Integer> getbTeamScore() {if(bTeamScore == null){bTeamScore = new MutableLiveData<>();bTeamScore.setValue(0);}return bTeamScore;} //A隊伍加分public void aTeamAdd(int p) {aBack = aTeamScore.getValue();bBack = bTeamScore.getValue();aTeamScore.setValue(aTeamScore.getValue() +p);} //B隊伍加分public void bTeamAdd(int p){aBack = bTeamScore.getValue();bBack = bTeamScore.getValue();bTeamScore.setValue(bTeamScore.getValue()+p);} //reset初始化方法public void reset() {aBack = aTeamScore.getValue();bBack = bTeamScore.getValue();aTeamScore.setValue(0);bTeamScore.setValue(0);} //undo返回上一步方法public void undo(){aTeamScore.setValue(aBack);bTeamScore.setValue(bBack);} }

MainActivity

將 MyViewModel 綁定進去
因為我們使用 dataBinding 所以進行如下修改

添加變量,name = “data”,類為”MyViewModel“

package com.example.score;import···; //多種包的引入,新建項目時自動給出,因此不做解釋public class MainActivity extends AppCompatActivity {MyViewModel myViewModel; //綁定MyViewModelActivityMainBinding binding; //綁定這個類,需要使用dataBinding,在xml文件中進行修改,如上面所描述@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);binding = DataBindingUtil.setContentView(this,R.layout.activity_main);myViewModel = new ViewModelProvider(this).get(MyViewModel.class);binding.setData(myViewModel);binding.setLifecycleOwner(this);} }

再次強調(diào)
Providers 已經(jīng)啟用,需要采用新的方法

使用方法:首先,在build.grade中添加依賴(版本可不一樣)

implementation’androidx.lifecycle:lifecycle-extensions:2.2.0’


Sync以下,不出現(xiàn)紅色則沒有問題
之后,先:導(dǎo)入包 ->

import androidx.lifecycle.ViewModelProvider;

再:

myViewModel = new ViewModelProvider(this).get(MyViewModel.class);

數(shù)據(jù)綁定

Button按鈕的數(shù)據(jù)綁定


如圖,點擊一個button控件,右鍵 -> Go to XML
添加方法進行數(shù)據(jù)綁定

android:onClick="@{()->data.aTeamAdd(1)}"


分別對與隊伍A與隊伍B加分的數(shù)據(jù)進行綁定
如上圖所示表示對于隊伍A 的加一分的數(shù)據(jù)進行綁定
同理,其他加分項進行相對應(yīng)的處理

TextView的數(shù)據(jù)綁定

右鍵 -> Go to XML
進行如下修改:(函數(shù)調(diào)用方法)

android:text="@{String.valueOf(data.getaTeamScore())}"


同理,B隊伍 Score TextView數(shù)據(jù)綁定做相應(yīng)的處理

Screen Orientation(屏幕旋轉(zhuǎn))

按鈕高度以及字體大小優(yōu)化

設(shè)置橫屏狀態(tài)下的布局

點擊 -> Creat Landscape Variation


看圖我們?nèi)菀椎玫?#xff0c;由于我們設(shè)置的字體或邊框太大,導(dǎo)致橫屏狀態(tài)下,按鈕控件之間非常緊密
我們再設(shè)置一些資源供橫盤狀態(tài)下使用

按鈕高度

將豎屏狀態(tài)按鈕高度改為60sp

同時設(shè)置橫屏?xí)r的高度

并將橫屏下的按鈕高度參數(shù)設(shè)為此資源

字體大小


同理,依次配置

Localization(本地化)

進行語言支持,點擊 Default -> Edit Translations -> 點擊地球圖標(biāo) ->添加Chinese



根據(jù)需要進行相應(yīng)的漢化,如圖:

注意:漢化效果的展示需要將手機換為中文環(huán)境

調(diào)試運行

豎屏狀態(tài):

橫屏狀態(tài)

本地化模式

總結(jié)

以上是生活随笔為你收集整理的阶段小练—篮球比赛计分器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。