ファイル
> オプション
>
リボンの設定
> 開発
にチェックを入れる
2023年7月25日火曜日
2023年7月24日月曜日
iOS Xcode ドキュメンテーションコメントを追加するショートカットキーを紹介
メソッドの上部で option + command + /
を入力すると、自動でドキュメンテーションコメントが追加されます。
あとで見返すときのために、「何をするメソッドか」「引数にはどんな値が必要か、どういう値が想定されているか」「戻り値は何か」などを記入しておきましょう。
参考
2023年7月23日日曜日
Android 共有ボタンのデータを受け取る、送信する
どうも。どっことです。今回は共有ボタンの実装について解説します。
X(旧:Twitter)でのポストやブログの記事など、Webにはいたる所に共有ボタンがあります。今回は共有ボタンによりデータが送信された時にアプリ側でそれを受け取るための実装と、アプリで共有ボタンを用意する実装をそれぞれ解説していきます。
受け取る側の実装
よくあるBroadcastReceiverの実装パターンです。2つやることがあります。
1つは、AndroidManifest.xml
に共有ボタンによるデータ送信のintent
を受け取る宣言を明記します。
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
そしてもう一つは、実際に受け取った時の処理です。受け取るActivity
やBroadcastReceiver
に対してインテントフィルターを設定します。Activity
では、メンバ変数として持っているintent
を、BroadcastReceiver
ではBroadcastReceiver#onReceived
の引数として渡されるintent
を参照することで、詰められているデータにアクセスすることができます。
override fun onCreate(savedInstanceState: Bundle?) {
if (intent?.action == Intent.ACTION_SEND) {
val text = intent.getStringExtra(Intent.EXTRA_TEXT)
// 良しなにする
}
}
送る側の実装
こちらもよくあるstartActivity(Intent)
の実装です。
ただintent
の作り方だけちょっと独特で、共有したいデータを詰めたintent
をIntent#createChooser
に渡します。そうして返されたintent
をstartActivity
で投げます。
val temp: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, "テストのテキストです")
type = "text/plain"
}
startActivity(Intent.createChooser(temp, null))
まとめ
今回は共有ボタンに関するAndroidの実装を解説しました。特に共有ボタンからデータを受け取る処理はアプリを利用してもらう契機として重要なので、参考にしていただけると幸いです。
参考
2023年7月22日土曜日
Swift CocoaPods導入手順をメモ書き程度に紹介
Cocoapodsのインストール
sudo gem install cocoapods
または
sudo gem install -n /usr/local/bin cocoapods
Cocoapodsのセットアップ
インストール完了後、各プロジェクトで利用するためにCocoaPodをセットアップする。
pod setup
その後プロジェクトフォルダでコンソールを開いて以下コマンドを実行する。
pod init
これにより、Podfile
が自動生成される。
ライブラリのインストール
自動生成されたPodfile
に必要なライブラリの記述し以下を実行。
pod install
初回は上記、2回目以降は以下を使う。
pod update
これにより、.xcworkspace
という拡張子のファイルが生成される。Xcode
でプロジェクトを開くときはこのファイルをクリックして開く。
参考
2023年7月21日金曜日
Mac スクリーンショットを撮影するためのショートカットを紹介
どうも。どっことです。Macでスクリーンショットを撮影したいけど、ショートカットキーを忘れて毎回検索しているので、備忘録として紹介します。
画面全体のスクショを撮影する場合
Shift + command + 3
Windowsの printscreen
範囲を指定してスクショを撮影する場合
Shift + command + 4
Windowsの Shift + win + s
ウインドウを指定してスクショを撮影する場合
Shift + command + 4 → Space
Windowsの alt + printscreen
iOS 数値を0埋めしてテキストとして表示する
Androidでは、String.format(text, value)としてテキストを出力させるが、iOSの場合もほぼ同じでStringのコンストラクタに入れるだけ。
let number = 3
let numberString = String(format: "%03d", number) // 003
参考
2023年7月20日木曜日
iOS アラートダイアログを表示するチートシート
iOSでよくあるアラートダイアログを表示する。
let alert = UIAlertController(title: "タイトルテスト", message: "メッセージテスト", preferredStyle: .alert)
// ボタンを追加する
let action = UIAlertAction(title: "ボタン", style: .default, handler: { action in
/** do something **/
})
// 以下で、ボタンとそのタップ処理を追加する。ボタンは複数追加できる。
alert.addAction(action)
// 表示
present(alert, animated: true)
present
がライフサイクル上でコールするのが早すぎると無視されるので、viewDidAppear()
以降のタイミングで呼ぶこと。
参考
2023年7月19日水曜日
iOS Enumの全要素を配列で取得する
enumの定義に、CaseIterable
を実装してあげるだけ。
enum Size: CaseIterable {
case maximum
case big
case medium
case small
case minimum
}
ってやると、allCases
にアクセスできるようになる
Size.allCases.map { /* do something. */ }
firstIndex
でインデックスもとれるようになる
Size.firstIndex(of: .big)!
参考
2023年7月18日火曜日
Android Applicationクラスの実装方法について解説
どうも。どっことです。今回はApplication
クラスの実装方法について解説します。
Applicationクラスとは
アプリが動作するとき、一番最初に動き出すクラスです。このクラスにアプリの初期設定といった各種処理を実装します。外部のライブラリを利用する場合なども、Application
クラスのonCreate
メソッド内に処理を実装することが多いので、遅かれ早かれAndroidアプリエンジニアの誰もが通る道かと思います。今回はそんなApplication
クラスの実装方法について解説します。
Applicationクラスの実装方法
以下の手順で実装します。
Application
クラスを継承したCustomApplication
クラスを追加するAndroidManifest.xml
にCustomApplication
クラスを登録する
順番に解説していきます。
Applicationクラスを継承したCustomApplicationクラスを追加する
Application
クラスを継承したCustomApplication
を追加します。クラス名に制約は無いので、分かりやすい名前を命名してください。
class CustomApplication : Application() {
override fun onCreate() {
super.onCreate()
... // ライブラリの初期化やテーマの設定などやりたいことをやる
}
}
AndroidManifestにCustomApplicationクラスを登録する
前手順で追加したCustomApplication
を登録します。AndroidManifest.xml
にあるapplication
タグにname
属性で、クラス名を設定してください。
<application
....
android:name=".CustomApplication">
<-- よくあるよしなに -->
</application>
あとはビルド+インストールし、アプリを起動してあげると、CustomApplication#onCreate()
の処理が最初に呼ばれます。Logなどを仕込んで、確認してみてください。
まとめ
今回はApplication
クラスについて解説しました。テーマの設定や各種ライブラリの初期化など、アプリをよりカスタマイズするにあたり必要になっていくクラスなので、使えるようにしておきましょう。
2023年7月17日月曜日
Android 子Viewをはみ出して表示させたい
「表示する領域のViewGroup
」に以下を設定する
android:clipChildren="false"
気を付けないといけないのは、領域外に押し込まれるViewの親ではなく、押し込まれた領域のViewGroupに設定する必要があるということ。つまり以下。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:clipChildren="false" <!-- 押し込まれる領域にclipChildren:falseを設定 -->
android:layout_height="match_parent">
<FrameLayout
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_gravity="center">
<View
android:layout_width="150dp"
android:layout_height="50dp"
android:layout_marginTop="-25dp" <!-- 親のFrameLayoutの領域外 -->
android:background="@android:color/black"
android:gravity="center" />
</FrameLayout>
</FrameLayout>
言われてみればそうか、と思うけどちょっと気持ち悪いと思うのは私だけだろうか。
参考
移行予定
どうも。どっことです。 タイトルの通りですが、諸事情により GitHubPage に移行予定です。 https://mkt120.github.io/ この備忘録に記載の内容を転記しつつ、今後はこちらのページを更新していく予定です。
-
どうも。どっことです。今回はGridLayoutの使い方について解説します。 GridLayout Androidのレイアウトを実装するとき、LinearLayoutやConstraintLayoutをよく利用しますが、Viewを格子状に配置する時は GridLayou...
-
どうも。どっことです。今回は zxing を使ってみたので紹介します。 zxingを使ってQRコード/バーコードリーダーを実装する 一時期流行りましたよね。バーコードとか、 QRコードとか読み取って、いい感じになにかやること。ネイティブアプリで。そんな時...
-
経緯 カスタムViewを作ったけど、ダークモードのことをまったく気にしなかったせいで、カスタムViewの背景が真っ白になってしまった。 思い values-night フォルダを用意して colors.xml を入れるのもいいけど、そこまでしなくても標準の設定で...