paletteのspinnerを使う

activity_main.xml

<Spinner
        android:id="@+id/spinner"
        android:layout_width="368dp"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="269dp"
        android:entries="@array/items"/>

valuesにarrays.xmlを作ります。
app->res->values->arrays.xml
なぜ、「arrays」と複数形になるのでしょうか?命名規則がわかりませんが、とりあえず進みます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="items">
        <item>item1</item>
        <item>item2</item>
        <item>item3</item>
        <item>item4</item>
        <item>item5</item>
        <item>item6</item>
        <item>item7</item>
        <item>item8</item>
        <item>item9</item>
    </string-array>
</resources>

とりあえず、spinnerは表示されましたが、相変わらずpositionが x, y:0, 0 になってしまいます。

activity_main.xmlでspinnerに”parent”を追加

<Spinner
        android:id="@+id/spinner"
        android:layout_width="368dp"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="269dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        android:entries="@array/items"/>

そうそう、これ、やりたかったの^^

androidで恋愛運を占おう

kotolinで☆と★の配列をつくります。

getOmikujiButton.setOnClickListener {
            val results = arrayOf("大吉","吉","中吉","小吉","凶")
            val l_results = arrayOf("☆★★★★","☆☆★★★","☆☆☆★★","☆☆☆☆★","☆☆☆☆☆")
            val n = Random().nextInt(results.count())
            val ln = Random().nextInt(l_results.count())

            if(n == 0){
                resultTextView.setTextColor(Color.RED)
            } else{
                resultTextView.setTextColor(Color.parseColor("#808080"))
            }

            resultTextView.text = results.get(n)
            loveText.text = l_results.get(ln)
            // Code here executes on main thread after user presses button
        }
    }

では、続けて、仕事運、金運を作っていきましょう。

getOmikujiButton.setOnClickListener {
            val results = arrayOf("大吉","吉","中吉","小吉","凶")
            val l_results = arrayOf("☆★★★★","☆☆★★★","☆☆☆★★","☆☆☆☆★","☆☆☆☆☆")
            val w_results = arrayOf("☆★★★★","☆☆★★★","☆☆☆★★","☆☆☆☆★","☆☆☆☆☆")
            val m_results = arrayOf("☆★★★★","☆☆★★★","☆☆☆★★","☆☆☆☆★","☆☆☆☆☆")
            val n = Random().nextInt(results.count())
            val ln = Random().nextInt(l_results.count())
            val wn = Random().nextInt(w_results.count())
            val mn = Random().nextInt(m_results.count())

            if(n == 0){
                resultTextView.setTextColor(Color.RED)
            } else{
                resultTextView.setTextColor(Color.parseColor("#808080"))
            }

            resultTextView.text = results.get(n)
            loveText.text = l_results.get(ln)
            workText.text = w_results.get(wn)
            moneyText.text = m_results.get(mn)
            // Code here executes on main thread after user presses button
        }

こんなに占ってなにがしたいのかわかりませんが、OK!

次は相性のいい星座
ドロップダウンは、androidだと、「spinner」というらしいですね。

早速つかってみましょう。

なんじゃーこりゃー

androidのmargin-leftを調整する

layout_marginLeftではなく、layout_marginStartで調整する

android:layout_marginStart="40dp"

layout_editor_absoluteX, layout_editor_absoluteYでも調整した場合は、アプリ側には反映されません。

tools:layout_editor_absoluteX="220dp"
tools:layout_editor_absoluteY="30dp"

android レイアウトの数値

dp
-> 画面の密度に応じて変化する値で「比較的」相対的に用いることのできる単位、基本的にこれで指定

px
-> pixelの略で絶対的な指定

sp
-> フォント向けのサイズ指定の単位

androidからwindowsにubsで画像を送る

Use UBS for

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        getOmikujiButton.setOnClickListener {
            Log.v("MainActivity", "Button Clilcked")

            // Code here executes on main thread after user presses button
        }
    }

getOmikujiButton.setOnClickListener {
            val results = arrayOf("大吉","吉","中吉","小吉","凶")
            val n = Random().nextInt(results.count())

            resultTextView.text = results.get(n)
            // Code here executes on main thread after user presses button
        }

若干抵抗が少なくなってきました。

分岐処理

getOmikujiButton.setOnClickListener {
            val results = arrayOf("大吉","吉","中吉","小吉","凶")
            val n = Random().nextInt(results.count())

            if(n == 0){
                resultTextView.setTextColor(Color.RED)
            } else{
                resultTextView.setTextColor(Color.parseColor("#808080"))
            }

            resultTextView.text = results.get(n)
            // Code here executes on main thread after user presses button
        }

OK、では応用してみましょう。

textView, buttonTextのデフォルトvalueを変更する

app -> res -> values -> strings.xml
strings.xmlにvalueがsetされているので、この値を変更する

<resources>
    <string name="app_name">New</string>
    <string name="message_text">...</string>
    <string name="button_text">ボタン</string>
    <string name="textview">時間を表示します</string>
</resources>

textViewがかわりました。

kotolinを頑張らないと全然駄目ですが、少しandroidの構造がわかってきましたね♪
最低限の項目として以下は必要
1.AndroidのDB連携
2.APIを使ったサービスづくり
3.アプリの経験豊富なデザイナーと一緒にサービスを作る
4.ストア申請までもっていく

kotolin 文字列の連結

fun changeTextView(view: View){
        var calendar = Calendar.getInstance()
        val hour = calendar.get(Calendar.HOUR_OF_DAY)
        val minute = calendar.get(Calendar.MINUTE)

        messageTextView.text = "Hello android!"
        textView.text = "時間 ${hour.toString()}:${minute.toString()}"
    }

androidで時間を表示する

fun changeTextView(view: View){
        var calendar = Calendar.getInstance()
        val minute = calendar.get(Calendar.MINUTE)

        messageTextView.text = "Hello android!"
        textView.text = minute.toString()
    }

勝手が異なるから、スクリーンショットの転送も最初は一仕事だ。

valは変更不可
varは変更可

Android studioのEmulatorが遅すぎるので、実機でテストする

今回使うのは、HT17 android version 6.0(数年前に開発用としてほぼ新品で6000円くらいで買いました)

HT17
(1)Setting -> Dveloper optionsのDebuggingでUSB debuggingをonにする。
(2)Setting -> Personal -> Security -> Device administration -> Unknown sourcesをonにする
(3)windos | mac にUBSでつなぐ。

Android studio
(4)studio のDeploymentでConnected Devicesで、{$device}(HOMTOM HT17)を選択する。
(5)Runで実機に反映される!!!

きた~ ひゃっぽい!!!!!!!!!!gradle finishが1mくらいに改善。 エミュレーター遅すぎて、android開発撤退しようかと思ってたけど、良かった良かった!!!

デバックが解決したので、では少しずつ作っていきましょう♪

kotolinのtextを変えます。

fun changeTextView(view: View){
        messageTextView.text = "Hello android!"
    }

文字の変更が反映されてますね。

では、textViewを追加してみます。

fun changeTextView(view: View){
        messageTextView.text = "Hello android!"
        textView.text = "Hello android!"
    }

apply changeを押すと、buildが9sくらいに短縮されました。感動