メインカテゴリーを選択しなおす
いきなりプログラミング Androidアプリ開発 / Sara
いきなりプログラミング Androidアプリ開発 作者:Sara 翔泳社 Amazon ランキング参加中模型部 レビューという名の感想文です。 翔泳社のCodeZineで無料公開されていたので読んでみました。 codezine.jp Androidでアプリ開発をする場合の流れを把握するための本だと思います。 言語系についての説明は特になし。 ある程度の軽い説明はあるものの、冒頭でもKotlinの詳しい解説はしない旨書かれています。 AndroidStudioでサポートページからダウンロードしてきた、サンプルコードをベースに書籍中の指示に従いプログラムを書き換えてアプリにしていくという流れです。…
Kotlinで始めるAndroidアプリ開発入門:ToDoアプリをゼロから作りながら学ぶコツと失敗談 スズシンラボ
「アプリを作ってみたい!」という思いから、初心者が挑戦したKotlin×AndroidでのToDoアプリ開発。ライブラリ設定の壁、スペルミスでの時間ロス、そしてユーザーの意見を反映させる工夫など、開発初期に直面するリアルな苦労と学びを紹介します。
KotlinとJavaFXで画像圧縮ツール『ImageCompressorFX』を自作してみた! スズシンラボ
KotlinとJavaFXを使って画像圧縮ツール『ImageCompressorFX』を自作してみました!シンプルな作りになってはいますが、実用性のあるツールになっていると思います。GitHubにて公開していますので、ぜひお試しください!
自作のKotlin製静的サイトジェネレーターKraftをGitHubに公開! スズシンラボ
自作のKotlin製静的サイトジェネレーターKraftをGitHubに公開しました!Kraftは、MarkdownファイルをHTMLファイルに変換することができます。Kraftの概要や使い方、ライセンスなどについて紹介します。
2024年8月の活動報告:noteデビューとKotlin製静的サイトジェネレーターの自作 スズシンラボ
鈴木俊吾(すずしん)の2024年8月の活動報告をお届けします。この月は、noteデビューとKotlin製静的サイトジェネレーターKraftの自作に取り組みました。詳細は記事をご覧ください。
【Android Studio】スマホをタップしてコダックを召喚
非日常生活に入る前に 下書きをしていた記事があったことを思い出しました ARにハマっていて勉強中だったのに…すっかりリセットされてしまいました また日常に戻ったら1からやり直しかな(悲) その時のために まとめたものをアップしておきます 以前アップしたUnityのスマホをタップしてコダックを召喚 everydayisagoodday.hatenadiary.com これのAndroid Studio版ですAndroid StudioでもARアプリができるはずなのでいろいろ調べながら挑戦してみました が うまくいかず保留にしようかと思い始めた頃この記事に遭遇 qiita.com 解説通りにやって…
昨日からの続きです 今日は各ボタンをタップした時の処理を編集します // カラーチェンジメソッド fun ChangeColor(colorSelected: String) { when (colorSelected) { "black" -> color = Color.BLACK "red" -> color = Color.RED "blue" -> color = Color.BLUE } paint!!.color = color } // clearメソッド(初期化とキャンバスクリア) fun Clear() { pathList.clear() colorList.clear(…
今日は手書きメモアプリの描画するクラスCustomSurfaceViewを作成します CustomSurfaceView.ktを編集していきます import android.content.Context import android.graphics.Bitmap import android.graphics.Bitmap.CompressFormat import android.graphics.Bitmap.createBitmap import android.graphics.Canvas import android.graphics.Color import android…
今日は手書きメモアプリのMainActivity.ktの編集です import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.SurfaceView import android.widget.Button import android.widget.ImageView class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super…
今年は簡単なゲームをたくさん作りました 最近はUnityが面白くてUnityの方に比重が傾いていますがAndroid Studioも忘れない程度にはさわっています 久しぶりに簡単なメモアプリを作ってみたのでプログラム(kotlin)を製作段階順にアップしていきます まずは下準備としてres/drawableにcircle_button.xmlを作ります circle_button.xmlを編集 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/andro…
Android Studio kotlinのメソッドパーツ化 今回はデータ保存です ゲームのハイスコアのようにアプリを終了しも保持されるsharedPreferencesを使います sharedPreferencesの詳細はAndroidDevelopersをどうぞ ここではコピペして使えるように余分な説明は省きます val sharedPreferences = getSharedPreferences("GAME_DATA", Context.MODE_PRIVATE) var highScore:Int = sharedPreferences.getInt("HiGH_SCORE",0)…
Android Studio kotlinのメソッドパーツ化 今回は画面遷移です ゲームの結果画面を表示するときによく使いますね val intent = Intent(this,ResultActivity::class.java) startActivity(intent) finish() /*画面を削除するとき*/ 使用例はこちら(xmlファイルは省略します) import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import andr…
Android Studio kotlinのメソッドパーツ化 今回はonTouchEventです onTouchEventは画面を押す 離す 移動するなどの操作を行ったときに呼ばれるメソッドです 前にアップしたonDrawと組み合わせると簡単なお絵描きアプリができます override fun onTouchEvent(event: MotionEvent?): Boolean { when(event.action){ MotionEvent.ACTION_DOWN -> { /*押した時の処理*/ } MotionEvent.ACTION_MOVE -> { /*移動した時の処理*/ } …
Android Studio kotlinのメソッドパーツ化 今回はカウントダウンタイマーです kotlinのライブラリにはカウントダウンタイマーが準備されています なのでタイマーの秒数やインターバル秒数 経過処理 終了処理を設定するだけですカウントダウンタイマーのオブジェクト val timer = (object : CountDownTimer(3000, 1000) { //1秒ごとに3秒間 override fun onTick(p0: Long) { //p0は残り時間 //途中経過 } override fun onFinish() { //終了設定 } }) タイマーをスタート…
Android Studio kotlinのメソッドパーツ化 今回はタイマータスクです 前にアップしたRunnableと同様 定期的に指定の処理をするタイマーです 動きが同じならどう使い分けるのか? ごめんなさい 不勉強でよく分かりません 何となくですが クラスの継承に関係があるのかと… 使い分けは説明できませんが 使い方を val timer = Timer() val handler = Handler() timer.schedule(object : TimerTask() { override fun run() { handler.post { /*処理*/ } } }, 3000…
Android Studio kotlinのメソッドパーツ化 今回はRunnableです Runnableは定期的に指定の処理をするタイマーです var runnable = Runnable { } val handler = Handler() runnable = Runnable { Handler().postDelayed( { /*処理*/ }, 3000 ) //3000ミリ秒(3秒)後にタイマー開始 handler.postDelayed(runnable,1000) //1000ミリ秒(1秒)ごとに処理をする } handler.post(runnable) タイマー処理を…
Android Studio kotlinのメソッドパーツ化 今回はHandlerです Handlerはtimeミリ秒後に指定の処理をするものです Handler().postDelayed( { /*処理*/ }, time ) 使用例はこちら(xmlファイルは省略します) import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Handler import android.view.View import android.widget.Button import a…
Android Studio kotlinのメソッドパーツ化 今回はアラートダイアログです アラートダイアログはいろんな形状にカスタマイズできますが 私が一番よく使うシンプルなものにします AlertDialog.Builder(context) .setTitle("タイトル") .setMessage("メッセージ") .setPositiveButton("Yes", { dialog, which -> //ポジティブボタンを押した時の処理 }) .setNegativeButton("No", { dialog, which -> //ネガティブボタンを押した時の処理 }) .sho…
Android Studio kotlinのメソッドパーツ化 今回はメッセージを表示するトーストです Toast.makeText( this, //context "massage", //表示するメッセージ Toast.LENGTH_SHORT // or LENGTH_LONG ).show() 使用例はこちら(xmlファイルは省略します) import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.T…
Android Studio kotlinのメソッドパーツ化 今回は有効・無効と表示・非表示ですボタン有効 btn.isEnabled = true ボタン無効 btn.isEnabled = false テキスト表示 text.setVisibility(View.VISIBLE) テキスト非表示 text.setVisibility(View.INVISIBLE) テキスト削除 text.setVisibility(View.GONE) 使用例はこちら(xmlファイルは省略します) import androidx.appcompat.app.AppCompatActivity import…
今日は『効果音』です import android.content.Intent import android.graphics.* import android.media.AudioAttributes import android.media.SoundPool import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.view.MotionEvent import android.view.SurfaceHolder import android.…
今日は『結果の表示ともう一度ボタンおよび終了ボタン』です まず結果画面を表示するクラスGameOver.ktを作成します GameOver.ktを編集します import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.TextView class GameOver : AppCompatActivity() { override fun onCrea…
今日は『結果画面のレイアウト(XML)作成』です res/layoutにactivity_game_over.xmlを作成します activity_game_over.xmlを編集します <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns…
今日は『ゲームスタートと終了』です import android.graphics.* import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.view.MotionEvent import android.view.SurfaceHolder import android.view.SurfaceView import android.widget.ImageButton import android.widget.TextView import an…
今日は『もぐらの画像を変える(叩いたとき、空振りしたとき)』です import android.graphics.* import android.os.Bundle import android.os.Handler import android.view.MotionEvent import android.view.SurfaceHolder import android.view.SurfaceView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import java.u…
今日は『もぐらをタップできたらスコアアップ』です import android.graphics.* import android.os.Bundle import android.os.Handler import android.view.MotionEvent import android.view.SurfaceHolder import android.view.SurfaceView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import java.util.* im…
今日は『もぐらをランダムに出没させる』です import android.graphics.* import android.os.Bundle import android.os.Handler import android.view.SurfaceHolder import android.view.SurfaceView import androidx.appcompat.app.AppCompatActivity import java.util.* import java.util.concurrent.ThreadLocalRandom //モグラフラグ 0:モグラ穴 1:モグラ出…
夏休みも終盤 情報系の学校だとプログラミングの課題があったりするのでしょうか? 標準的な部分はChatGPTにやって頂いたらいいと思うんですよ 大事なのはそれを自分流にアレンジする技術 それよりもっと大事なのは個性的な発想だと私は思うのですが… 今日からもぐらたたきのプログラム(kotlin)を製作段階順にアップしていきます 1.ゲーム画面のレイアウト(XML)作成 2.もぐらをランダムに出没させる 3.もぐらをタップできたらスコアアップ 4.もぐらの画像を変える(叩いたとき、空振りしたとき) 5.スタートボタンを押したらゲームスタート タイマーをカウントダウンしタイマーが0になったら終了 6…
Android Studio kotlinのメソッドパーツ化 今回は乱数の生成です 乱数を生成する方法はいろいろあるし その方法ひとつひとつに数値の型(Int , Float , Long , Double…)の場合の説明があります マニュアルなんだからすべての場合が記載されているのは当然なんですけど 選択肢が多いと余計に迷ってしまいます 私がいつも使っている方法は3つ これに ×10とか ÷10を必要に応じて付加すれば十分対応可能ですⅠ 10~20のように範囲を指定する乱数生成 var num = (10..20).random() Ⅱ 0以上設定数値未満の乱数生成 var num = Ra…
Android Studio kotlinのメソッドパーツ化 今回は効果音を鳴らすときに使うサウンドプールですサウンドプール作成 val audioAttributes = AudioAttributes.Builder() //USAGE_MEDIA , USAGE_GAME .setUsage(AudioAttributes.USAGE_GAME) //CONTENT_TYPE_MUSIC ,CONTENT_TYPE_SPEECH, etc. .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) .build() val soundPoo…
以前 Android Studioでゲームのひな形となるプログラムを作りました everydayisagoodday.hatenadiary.com 今度はプログラムの中でよく使うメソッドの必要なところだけを変更して使える部品のようなものを作っていこうと思っています 言葉にすると分かりにくいですね 今回は例として『スクリーンサイズを取得する』パーツを作って実行してみます 2パターンあります Ⅰ val wm = windowManager val display: Display = wm.defaultDisplay val size = Point() display.getSize(si…
Android Studioの前回 ゲームのひな形として背景が動いているだけのアプリを作りました せっかくなので今回はそこに飛んでいる鳥を追加したいと思います 1.res/drawableに鳥の画像を準備 今回は『ペーパーミュージアム』さんのフリーイラスト集からお借りしました paperm.jp 2.MainActivity.ktの編集 前回のプログラムに//*****の部分を追加しました import android.content.Context import android.content.res.Resources import android.graphics.Bitmap impo…
Android Studioで応用範囲の広いゲームのひな形みたいなものを作りたくてただ背景が動くだけのものを作ってみました まずres/drawableに画像を用意 いつものように『いらすとや』さんからお借りしてます www.irasutoya.com 次にactivity_main.xmlの編集 画面全体をSurfaceViewにします <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.c…
【Android Studio】Tach the number 2回目
今日は『数字をシャッフルして表示』です import android.os.Bundle import android.widget.Button import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) gameStar…
【Android Studio】Tach the number 3回目
今日は『カウントダウンして数字をタップできるようにする』です import android.graphics.Color import android.os.Bundle import android.os.CountDownTimer import android.widget.Button import android.widget.TextView import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedIns…
【Android Studio】Tach the number 4回目
今日は『タイマーを表示する』です import android.graphics.Color import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.widget.Button import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import java.text.SimpleDateFormat import java.util.* class Ma…
【Android Studio】Tach the number 5回目
今日は『リトライor終了(ダイアログアラート)』です import android.graphics.Color import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.widget.Button import android.widget.TextView import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import ja…
【Android Studio】Tach the number 6回目
今日は最後『効果音をつける』です まず下準備としてProjectタブのresにrawフォルダーを作成します rawに音源をドラッグ&ドロップしておきます 今回は4つの音源を準備しました 音源はいつも効果音ラボさんの音源を使わせていただいてます soundeffect-lab.info import android.graphics.Color import android.media.AudioAttributes import android.media.SoundPool import android.os.Bundle import android.os.CountDownTimer i…
【Android Studio】Number Puzzle 1回目
前回のTach The Numberを応用した1から24まで数字を並べるゲーム今回はこれを製作段階順にアップしていきます レイアウト(XML)作成 シャッフルして不可能配列でなければ表示 数字をタップして移動 クリアチェック シャッフルボタンと終了ボタン 効果音をつける 今日は『レイアウト(XML)の作成』です <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.andro…
【Android Studio】Number Puzzle 2回目
今日は『シャッフルして不可能配列でなければ表示』ですここで不可能配列とはですがランダムに数字を入れ替えると結構な確率で解くことのできないパズルになってしまいます解けないパズルはゲームとして意味がないので事前に解けるか解けないかをチェックして解けるパズルだけを表示するようにします manabitimes.jpここに詳しく解説されている方がいました理屈はよく分かりませんが判定方法のロジックだけ分かればOK(笑) import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.o…
【Android Studio】Number Puzzle 3回目
今日は『数字をタップして移動』です ここで下準備 res/values/colore.xmlにpuzzle5,puzzle5upという名前で色を設定しておきます import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.TextView import android.widget.Toast private var textData =ArrayList<…
【Android Studio】Number Puzzle 4回目
今日は『クリアチェック』です import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.view.animation.AlphaAnimation import android.view.animation.Animation import android.widget.TextView import android.widget.Toast private var t…
【Android Studio】Number Puzzle 5回目
今日は『シャッフルボタンと終了ボタン』です import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.view.animation.AlphaAnimation import android.view.animation.Animation import android.widget.Button import android.widget.TextView impor…
【Android Studio】Number Puzzle 6回目
今日は最後『効果音をつける』です まず下準備としてProjectタブのresにrawフォルダーを作成します rawに音源をドラッグ&ドロップしておきます 今回は3つの音源を準備しました 音源は効果音ラボさんです ありがとうございます soundeffect-lab.info import android.graphics.Color import android.media.AudioAttributes import android.media.SoundPool import androidx.appcompat.app.AppCompatActivity import android.o…
今度のゲームはブロックくずしこれをいつものように製作段階順にアップしていきます 1.メイン画面のレイアウト(XML)作成 2.ブロックの表示 3.画面をタッチしてバーを動かす 4.ボールを動かす 5.ボールの跳ね返るスピードに変化をつける スコアの表示 6.結果画面のレイアウト(XML)作成 7.結果表示とリトライ(画面遷移) 8.効果音今日は下準備として画像をres/drawableに 効果音をres/rawにドラッグ&ドロップしておきます 画像はペイントなどで簡単に作れます 私が作ったものでよろしければダウンロードしてお使いください画像をダウンロードする効果音はこちら soundeffec…
今日は『メイン画面のレイアウト(XML)作成』です <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="matc…
今日は『ブロックの表示』です まずはMainActivityから import android.content.Context import android.os.Bundle import android.util.DisplayMetrics import android.view.WindowManager import androidx.appcompat.app.AppCompatActivity var SCREEN_HEIGHT = 0 //画面の高さ var SCREEN_WIDTH = 0 //画面の幅 val tate: Int = 8 //ブロックの縦の数 val yok…
今日は『画面をタッチしてバーを動かす』です import android.content.Context import android.os.Bundle import android.util.DisplayMetrics import android.view.MotionEvent import android.view.View import android.view.WindowManager import android.widget.ImageView import android.widget.TextView import androidx.appcompat.app.App…
今日は『ボールを動かす』です import android.content.Context import android.os.Bundle import android.os.Handler import android.util.DisplayMetrics import android.view.MotionEvent import android.view.View import android.view.WindowManager import android.widget.FrameLayout import android.widget.ImageView import andr…