ライブラリでトラブった時に、とりあえず依存関係を確認する。
./gradlew dependencies
どうも。どっことです。今回はリップルエフェクト(Ripple Effect)の実装方法について解説していきます。
リップルエフェクトは、Viewにタップした時に水の波紋のように色が広がっていくような表示のことです。
これを設定しなくても動作に影響することはありませんが、ユーザにタッチしたことを知らせるには重要な効果だと思います。
実装自体は簡単で、android:backgroundに以下を設定するだけです。
android:background="?attr/selectableItemBackground"
なお、すでに背景色を設定済みであれば、android:foregroundに設定することで同様に表示することができます。
android:foreground="?attr/selectableItemBackground"
今回はリップルエフェクトの実装方法について解説しました。もはや一行追加するだけという非常に簡単な設定だけなので、解説というにはあまりにもネタが少ないかなと頭を悩ませています。
Javaと似てて、末尾に ... を追加するだけ。参照する際は、配列と同じように扱える。
func print(texts: String...) {
// 配列のように要素数を参照できる
if texts.count == 0 {
return
}
// 配列のように要素を参照できる
print("first: \(texts[0])")
for text in texts {
print("element: \(text)")
}
}
ライブラリをアプリに組み込んでビルドしたら、以下のエラーが出力されたが、知ってしまえばなんてことはない。
Undefined symbol: _GULLogBasic
Undefined symbol: _OBJC_CLASS_$_***
Undefined symbol: _OBJC_CLASS_$_***
Undefined symbol: _OBJC_CLASS_$_***
Undefined symbol: _OBJC_CLASS_$_***
「それ実機でしかビルドできないのに、シミュレータを対象にビルドしているよ」というときに表示されるエラーなので、「シミュレータでも動作するライブラリを使う」か、それが無理なら「シミュレータをターゲットにビルドするときは、該当のライブラリを組み込まずに使う、という方針となる。
どうも。どっことです。今回は、アジャイル開発(アジャイル)とスクラム開発の違い、そしてスクラム開発におけるイベントについてします。
アジャイルとは「俊敏性の高いソフトウェア開発」のことを指します。
そして、スクラムとは「俊敏性の高いソフトウェア開発」の手法のひとつです。つまりスクラム開発はアジャイルに分類される手法の一つとなります。
固定的かつ長期的なメンバーで開発が進行することを想定しています。それによりチームワークを高まり、結果として生産性の最大化やビジネス目標の達成を図ります。
スクラム開発ではプロダクトオーナー、開発者、スクラムマスターの役割があり、各役職はメンバーに割り当てられます。
スクラム開発には4つのプロセス(イベント)があります。
スプリントの最初に実施するプロセスです。
プロダクトバックログ(プロジェクトで消化すべきタスクの一覧)から優先度の高いアイテムを抽出し、タスク化します。タスク化する対象は、メンバーで認識相違がないことをあらかじめ確認したうえで決まります。そうしてタスク化されたアイテムがそのスプリントで消化するバックログ(スプリントバックログ)となります。
平日の決まった時間(午前中、特に朝が一般的)に短い時間でのミーティングを実施し、進捗確認や要求変化の確認を行います。スクラムマスターが全員に「今日は何やりますか」と質問し、その回答を確認することだけが実施される。問題があれば、スクラムマスターは別途会議などを設定することで解決を促しますが、スクラムマスターは、その問題解決意思決定の責務を負います。
スプリント後に実施します。開発されたソフトウェアのレビューを行い、必要に応じてバックログをアップデートします。製品の機能や品質が十分であると判断されるまでスプリントとスプリントレビューを繰り返されます。
いわゆる振り返りです。スプリントの最後に実施します。
「スプリントの成果」にフォーカスが宛てられるスプリントレビューに対して、スプリントレトロスペクティブは「スクラムチームの動き」などの、プロセスにフォーカスされる。例えば、以下の事項について議論されます。
アジャイル開発にはスクラム以外にもエクストリーム・プログラミング(XP)やカンバンなどがあげられます。
今回は、アジャイル開発(アジャイル)とスクラム開発の違い、そしてスクラム開発におけるイベントについて解説しました。
このブログの表示感を調整するためにCSSをカスタマイズしていたが、毎回調べなおしていたので備忘録。
widthdivで頻出。heightdivで頻出。background-colorfont-sizepx,emとか。larger/smaller
(親要素のフォントサイズとの相対)とか。
colorfont-stylenormal/italic/obliqueとか。
paddingpx,em指定。marginpx,em指定。list-styleul)限定。左につくボッチの指定。noneを指定すると消える。border-stylesolid(実線),dashed(破線)など。border-widthpx, em指定。border-colorborderborder-style, border-width,
border-colorを一括で指定できるプロパティ。
ViewのプロパティであるisHighlightedの更新を受けて、背景色を設定するだけ。
カスタムViewを実装する際に、isHighlightedをオーバーライドし、didSetでbackgroundColorを設定すればいいだけ。こんなん。
override open var isHighlighted: Bool {
didSet {
backgroundColor = isHighlighted ? .lightGray : .blue
}
}
ちなみにisHighlightedとは、Androidでいうところのstate_pressed。UIButtonなどのUIControlクラスを継承したViewは状態に対して背景を変えるメソッドがあるため、それを使えばタップ中の色を変えることができる。
どうも。どっことです。今回は、iOSのUIViewについて角丸や枠線をつけ方について実装を解説していきたいと思います。
私自身がAndroidエンジニアとしてやってきた時間が長いので、どうしてもAndroid開発者目線となってしまうのですが、Viewを角丸にしたり、枠線をつけたりする実装が本当に面倒くさいです。簡単に見せるだけでも、新規に背景用ファイルを用意してあげる必要があります。
しかし、iOSは角丸や枠線を超簡単に実装できます。本当に羨ましいです。別に悔しくねーし。
UIViewが共通に持っているlayerという変数に対応するパラメータがあるので、コード上であれば以下に値を設定することで角丸にすることができます。
layer.cornerRadius
枠線の実装も同様で、以下に値を設定することで枠線を付けることができます。
layer.borderWidth
layer.borderUIColor
ちなみに、borderUIColorは
CGColorクラスを設定する必要があることに注意してください。
今回は、UIViewを角丸にしたり枠線をつけたりする実装方法を解説しました。特に見せ方を柔らかくする角丸の実装が簡単なのは、iOSはとても良いなと思いました。
どうも。どっことです。今回ですが、ここ2,3年、AndroidStudioでのビルドが20回に1回程度しか成功しなくなり開発モチベが著しく低下していたが、ついにその問題を解決することができたので備忘録として記載します。
How to solve this error app:packageDebug FAILED
A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable java.io.FileNotFoundException: C:\Users\HP\AndroidStudioProjects\Chatter\app\build\intermediates\incremental\packageDebug\tmp\debug\zip-cache\androidResources (Access is denied)
このエラーが解決できずに、この2,3年本当に困っていました。「はー。もうダルイし、Macでも買うか。」とここぞとばかりに物欲全開に検討していました。
そんなこんなでPCのリプレースも検討していたのですが、上記のページをみていくとコメント欄に以下の記述がありました。
The actual problem is that your anti-virus is preventing the access to the files. Make the Android Studio application as trusted application(recommended) or try turning off your antivirus.(おまえのPCのウイルス対策ソフト、ちゃんと設定しとるんか?AndroidStudioを信頼できるアプリに設定しとるか?あとは試しにソフトの機能をOFFにしてビルドしてみ?)
私「...」
私「...」
私「それだわー」
ウイルス対策ソフトの機能をOFFにしてビルドしたところ、何事もなかったかのようにビルドが成功しました。
ウイルス対策ソフトをインストールしてからすぐのAndroid Studio起動で「なんか知らんツールがアクセスしたがってるけどええか?」という警告が表示されていたので脳死でOKを設定していましたが、それだけじゃ足りなかったようです。公式サイト(参考に記載)にも「ビルドのパフォーマンスが著しく低下するで?ちゃんと設定するんやで?」というアナウンスがされていました。
原因が分かったので、ウイルス対策ソフトの設定に対象外フォルダを設定することで無事に解決しました。本当に良かった。
私のPCではソースネクスト社のウイルスセキュリティソフトをインストールしています。絶対にツッコませない。このソフトでの対象外フォルダ指定手順を紹介して終了したいと思います。
設定 >
ウイルス・スパイウェア対策
>設定(セクションタイトル下部に導線有)
ウイルス自動検知タブ >
検査したくないファイル、フォルダを指定する
ファイルやフォルダを追加で検査対象外のフォルダを追加する。以下にチェックを入れる。
ウイルス自動検知の対象にしないサブフォルダも含むどうも。どっことです。今回は、毎回忘れるGradleのキャッシュ削除のコマンドを備忘録として紹介します。
早速ですが、コマンドを載せます。
rm -rf ~/.gradle/cashes
~/となっていることを見ても分かる通り、削除するディレクトリはアプリプロジェクトにあるディレクトリではなくユーザディレクトリにあるキャッシュのディレクトリになります。これを実行すると、次回ビルドは非常に時間がかかるのが見込まれますので、「PCやプロジェクトがおかしいな?」と思った時にやるのがちょうどいいと思います。
ちなみに .gradle フォルダを削除しても、Gradle がビルドする時に再構築してくれるらしいので気にすることは全くありません。
ただ、最近AndroidStudioのビルドが全く通らない。
C:\Users\XXXXX\Documents\project\sampleProject\app\build\intermediates\incremental\packageDebug\tmp\debug\zip-cache\androidResources (アクセスが拒否されました。)
いったいなんだってばよ。
追記。なんか解決した。新規に記事にした。
どうも。どっことです。 タイトルの通りですが、諸事情により GitHubPage に移行予定です。 https://mkt120.github.io/ この備忘録に記載の内容を転記しつつ、今後はこちらのページを更新していく予定です。