Closed55

Android開発やる

蔀

app/src/main/java がソースコード入れる場所らしい
javaだけどKotlinも入るとか

蔀

values/strings.xml に文字列を全部定義するらしい

蔀

Activity: ライフサイクルを持つ画面のある処理(Controller要素)
Service: 画面のないバックグラウンド処理
View: 画面上に何かを表示するためのコンポーネント
レイアウトXML: 1画面に必要なViewを記述するXML

蔀

これでなんでLayoutファイルと紐づくんだろう?

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    }
}
蔀

tools:context=".MainActivity"

この記述で紐づけてると思うんだけど、消しても普通にビルドできるな……

蔀

Layoutファイル、スプリットでわけることができる

蔀

ConstraintLayout Chainで、AutoLayoutっぽいことができるらしい

蔀

鎖の出方、ちょっとハンターハンターみたいでいいね

蔀

UI開発どうやってやってんだろ?
Android Studio上のGUI操作? XML直編集?

蔀

ConstraintLayout、白丸をドラッグ操作で紐づけることができるみたい

https://akira-watson.com/android/constraintlayout.html

蔀

import文の粒度が細かくて、コンポーネント使うたびに新しいものimportする必要があるみたいだな

蔀

とりあえずボタンを作成
なぜかColumn * Rowがうまく出ずに苦戦した
多分Modifierをつけるとなんかアレっぽい

蔀

ボタンが横一杯に広がるレイアウトにしたいんだけど、これが実現できない
modifier = Modifier.fillMaxSize() にすると、一行だけになってしまう……

蔀

OutlinedTextField がないとずっと言われてしまって困っている

蔀

デザインガン無視で、一旦動くもんつくるかあ

蔀

親コンポーネントで持ってる状態変数を子コンポーネントで変更したいけど、どうしたらいいんだと思ったら、
状態ホイスティング(巻き上げ)って考えがあるらしく、クロージャーを渡す感じになる模様

https://tech.excite.co.jp/entry/2021/07/21/150000

蔀

import文がシュッと補完されるときとされないときの違いがわからない
されないとストレスがヤバい

蔀

Android Studioでコード分割したファイルを格納するディレクトリつくりたかったが、難しかった
プロジェクトのディレクトリ構造があるらしいが、ルールがよくわからない
とりあえずcom.example.xxx から [New] > [Package]

https://teratail.com/questions/162675

蔀

単なるディレクトリじゃなくて、package として切られちゃうのか

蔀

.idea/deploymentTargetDropDown.xml

謎の差分が出てきたんだけど、どうもシミュレーターを追加したからっぽい
.gitignore 対象でもいい気がするけど

蔀

Enum使いたいんだけど、Kotlinだと、メソッド持たせるとき、抽象クラスをつくらないといけない?

https://dogwood008.github.io/kotlin-web-site-ja/docs/reference/enum-classes.html

蔀

つまりこういうことか。
ちょっとダルいな……

enum class Operator(val symbol: String) {
    PLUS("+") {
        override fun calculate(lhs: Int, rhs: Int): Int {
            return lhs + rhs
        }
    },
    MINUS("-"){
        override fun calculate(lhs: Int, rhs: Int): Int {
            return lhs - rhs
        }
    },
    MULTIPLY("*"){
        override fun calculate(lhs: Int, rhs: Int): Int {
            return lhs * rhs
        }
    },
    DIVIDE("/"){
        override fun calculate(lhs: Int, rhs: Int): Int {
            return lhs / rhs
        }
    };

    abstract fun calculate(lhs: Int, rhs: Int): Int
}
蔀

コードのリファクタは一旦完了。
俺のKotlin力的に、この辺りで見切りにしないと延々改善できてしまう。

あとはボタンの配置が今左上詰めになってしまっているので、画面いっぱいに使う感じにレイアウトする

蔀

ButtonがMaxまで大きくならないのは、Intrinsic Sizeを持ってるからっぽい

蔀

Modifier.weight がボタンファイルから使えないと思ったら、RowとColumn直下じゃないとダメなのか

このスクラップは2022/07/24にクローズされました