Android Studio始めました

息子がAndroid Studioの使い方を教えてと言ってきたので、ここでAndroidのプログラミングを少し書きます。Swift解説からちょっと浮気です。 久しぶりにAndroid Studioを使ってみましたが、Hello Worldがリッチになっているのでした。

(1)Android Studioのインストール(簡単なので説明省略)

(2)Android Studioを起動 f:id:kuukaix:20210425194643j:plain →create new projectをクリック

(3)Basic Activityをクリックすると以下の画面に Name, Package Name, Save Location,Minimum SDKを少し編集 f:id:kuukaix:20210425194747j:plain

(4)1,2分待つとデバイスが選べるようになります。(それまでなんか仕事してます) Pixel_3a_API_30_x86 を選びます。 f:id:kuukaix:20210425195109j:plain

(5)その横の緑三角(実行ボタン)を押すて、1,2分待つと AndroidエミュレータでHelloWorldが実行されます。

f:id:kuukaix:20210425202145j:plain

(6)First Fragmentと Second Fragmentの2画面あるのね。実行されているアプリの「NEXT」ボタンを押すと、 First Fragment から Second Fragment に切り替わって、「PREVIOUS」ボタンになるのね。 で、「PREVIOUS」を押すと、Second Fragment からFirst Fragmentに戻ってくる仕組み。

Windows98をWindows10環境で動かす(2021年版)

2022年版を作成しました
Windows98をWindows10環境で動かす(2022年版) - kuukaixの日記

1.用意するもの

1.1 Windows98 Japanese (MSDN)インストールディスク(CDブート未対応)
- MSDN契約しないともらえない
1.2 Oracle VM VirtulBox バージョン 6.1.14 Windows
https://www.oracle.com/jp/virtualization/technologies/vm/downloads/virtualbox-downloads.html
1.3 FreeDOS 1.2
http://www.freedos.org/download/
1.4 Win98用のグラフィックドライバ(VirtulBox)140214.zip
https://web.archive.org/web/20190210203844/http://bearwindows.boot-land.net/vbe9x.htm

2.胆になるところ

2.1 セキュリティのメモリ保護にVT-xを使わないようにする
  手順: Windows10->スタート→設定→Windows セキュリティ→デバイス セキュリティ→コア分離の詳細→メモリ整合性→オフ
2.2 FreeDOSのインストール時 TABキー押して、最後に rawを追加
2.3 Win98SEのインストール時 setup.exe /nm /is /ie /c /p j;a とする

3.作業

3.1 Win10に最新のVirtulBoxをインストール(最新じゃないと動かないこと多し)
3.2 FreeDOS1.2サイトからFD12CD.isoをダウンロード
3.3 セキュリティのメモリ保護にVT-xを使わないようにする
  手順: Windows10->スタート→設定→Windows セキュリティ→デバイス セキュリティ→コア分離の詳細→メモリ整合性→オフ
3.4 VirtulBoxマネージャーを起動
3.5 「新規」ボタンを押す
3.6 名前に「Win98SE」といれると
  →良しなにしてくれるので→「作成」を押す
  →良しなにしてくれているので→「作成」を押す
3.7 新しく作ったWin98SEを選択して「設定」ボタンを押す
  ディスプレイ→スクリーン→ビデオメモリを18MBから32MBに変更
  (後で32MB用のグラフィックドライバを入れるため)
  ストレージ→丸いCDアイコン(空)をクリック
   →右に小さい▼のついた丸いCDアイコンが出るのでクリック
   →ディスクファイルを選択して、あらかじめダウンロードしておいたFD12CD.isoを選ぶ
  ネットワーク→ネットワークアダプターを有効化のチェックを外す
  USB→USBコントローラーを有効化のチェックを外す
  「OK」を押してダイアログを閉じる
3.8 「起動」ボタンを押す→起動ハードディスクを選択になるのでFD12CD.isoを選んで、「起動」を押す
3.9 Welcome to FreeDOS 1.2の画面が出る→TABキーを押す★重要
  .linux /isolinux/memdisk initrd=/isolinux/fdboot.img
  の後ろに rawを追加入力して[Enter]を押す。
3.10 Englishを選んでEnter→Yes でEnter→Yes でEnter→Yes でEnter→再起動して
  再びWelcome to FreeDOS 1.2の画面が出る→TABキーを押す★重要
  .linux /isolinux/memdisk initrd=/isolinux/fdboot.img
  の後ろに rawを追加入力して[Enter]を押す。
3.11 Englishを選んでEnter→Yes でEnter→Yes でEnter→Enter
  →US English (Default)を選んでEnter→Full Installationを選んでEnter
  →Yes でEnter→Yes でEnter→再起動して
3.12 Boot from system harddiskを選んでEnter
  →1. Load FreeDOS with JEMMEX, no EMS (most UMBs), max RAM freeを選んでEnter
(これでFreeDOSのインストールは終わり。次にWin98のインストール)
3.13 Windows10のCDドライブにWindows98 Japanese (MSDN)ディスクを入れる
3.14 FreeDOS画面の下のCD(丸い)アイコンを右クリック
  →FD12CD.isoが選ばれているが、ホストドライブからCDを入れたドライブに変更
※変更できない場合は、VirtualBoxマネージャーでWin98SEを選んで
   →「設定」から「ストレージ」→丸いCDアイコン(空)をクリック
   →右に小さい▼のついた丸いCDアイコンが出るのでクリック
   →ホストドライブを選択
3.15 FreeDOSの画面でC:>で、D:と入れる(英語キーボードになっているので注意)
3.16 dir[Enter]すると、JAPANESE.ATとJAPANESE.NECが見えるが、CD JAPANESE.AT
  して、CD WIN98SEする。dir/wするといくつかのCABファイルとSETUP.EXEが見える
3.17 setup.exe /nm /is /ie /c /p j;a ★重要と入力して Enter
3.18 これでWindows98のセットアップが起動する。
3.19 あとは画面の指示に従ってセットアップを進める
3.20 音楽が鳴ってWindows98へようこそダイアログがでます。ただし画面が16色

(これでWindows98のインストールは終わり。
 次にグラフィックドライバのインストール)

3.21 Win98用のグラフィックドライバ(VirtulBox)140214.zipを解凍したものをCDに焼く
※Win98だとクリップボード共有とかホストからのドラッグ&ドロップが使えないため
※Win98だとzip解凍が面倒なので、解凍しておく
3.22 すでにWindows98 MSDNディスクの代わりに140214.zipが入ったCDがホストPCに
 入っているはずなので、
3.23 Win98SEのマイコンピュータをダブルクリックしてDドライブ(CDのはず)から
 032MBが見えるのを確認する
3.24 Win98SEのデスクトップで画面のプロパティを開いて、「設定」タブの「詳細」ボタンを押す
3.25 「アダプタ」タブの「変更」ボタンを押す→
  「次へ」→特定の場所にあるすべての...を選んで「次へ」
  「ディスクを使用」→「参照」から032MBのフォルダーを選ぶ
  vbemp.infが選ばれる→「OK」
  VBE Miniport - Standard PCI Graphics Adapter (VGA)が選ばれる
  「OK」を押して「次へ」→「完了」→「適用」
3.26 一度Win98を再起動
※Win起動を真っ黒になったら、VirtualBox仮想マシンからACPIシャットダウン
3.27 16ビット 1024x768ピクセル が選べるようになる→「適用」

Win10でOracle VM VirtulBoxを使ってWinXpを動かす(2021年版)

  1. 用意するもの

1.1 アップデート版のXPのインスト―ルCD
1.2 Windows2000のインスト―ルCD
1.3 Oracle VM VirtulBox バージョン 6.1.14 Windows
https://www.oracle.com/jp/virtualization/technologies/vm/downloads/virtualbox-downloads.html

  1. 手順

(2.1) アップデート版のXPのインスト―ルCDなので、途中で旧WindowsのCDを入れるように指示されるが、旧WinCDが認識されず。
2.2 Win2000のインストールCDをあらかじめ*.isoイメージにして、HDDに保存。Win10のエクスプローラーで開いて、仮想CDドライブに割り当て。
2.3 上記WindowsのCD入れ替え指示のときにVirtualBoxから、カレントのCDドライブを変更して、Win2000のCDを認識させて、WinXpのCDドライブに変更することで、この問題を回避。
2.4 Windows + IEMicrosoft Update カタログ
 https://www.catalog.update.microsoft.com/Home.aspx
 にアクセスして、『KB936929』で検索すればSP3をダウンロードできる。
 注)検索「SP3」では見つからない。

SwiftUI にComboboxがない。Pickerを使う

import SwiftUI
 
struct ContentView: View {
    @State var selected = 0
    @State var ItemList = ["apple", "orange", "lemon"]
    var body: some View {
        VStack {
            Text("Hello, World!")
            Picker(selection: $selected, label: Text("Please choose one")) {
                ForEach(0 ..< ItemList.count) {
                    Text(self.ItemList[$0])
                }
            }
        }
    }
}

NavigationLinkを使う

import SwiftUI
    
struct ContentView: View {
    var body: some View {
        NavigationView {
                NavigationLink(destination: TestView()) {
                    Text("Go Test View")
                }
            .navigationBarTitle("Top View")
        }
        Text("Hello, world!")
            .padding()
    }
}

struct TestView: View {
    var body: some View {
        Text("Test View")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

SwiftUIでチェック付きのListViewを作る

SwiftUIでチェック付きのListViewを作るのが大変でした。SwiftUI beta4 までOKだったのが Beta5でNGになったので、 検索で見つけたサンプルコードがビルドエラーに! 色々やって以下のコードに落ち着きました。 もっといい方法がありそうなんっだけど。なお、チェック部分は手抜きで文字列です。

import SwiftUI
 
var demoData = [Person(name: "Yamada Taro"), Person(name: "Aoki Ichido"), Person(name: "Sato Koji"), Person(name: "Kojima Masao")]
 
struct PersonView: View {
    @State var selectKeeper = Set<UUID>()
    
    var body: some View {
        VStack {
            NavigationView {
                List {
                    ForEach(demoData) { person in
                        SelectableRow(person: person, selectedItems: self.$selectKeeper)
                    }
                    .navigationBarTitle(Text("Selection Demo \(selectKeeper.count)"))
                }
            }
        } // VStack
    }
}
 
struct Person: Identifiable, Hashable {
    let id = UUID()
    let name: String
}
 
struct SelectableRow: View {
    var person: Person
 
    @Binding var selectedItems: Set<UUID>
    var isSelected: Bool {
        selectedItems.contains(person.id)
    }
    var isSelectedStr: String {
        get {
            if selectedItems.contains(person.id) {
                return "Yes"
            } else {
                return "No"
            }
        }
    }
 
    var body: some View {
        HStack {
            Button(action: {
                if(self.isSelected){
                    self.selectedItems.remove(self.person.id)
                }
                else{
                    self.selectedItems.insert(self.person.id)
                }
            }) {
                Text("\(isSelectedStr)")
            }
            Text(self.person.name)
        }
 
    }
}