android で今までアニメーションって、Viewアニメーションを使っていたのだが
3.0以上から新しいアニメーション方法が実装されていたらしい。
しかも、アニメーション後にちゃんと見た目だけじゃなく。Viewの実態も動いてくれるとのこと。
昔はよく、アニメーションをして止まったら、指定の位置までViewのXY(Marginとか)を動かしていたっけ。。。
リファレンス。
http://developer.android.com/guide/topics/graphics/prop-animation.html
ちゃんとXMLでも定義が出来そう。
あれでもさ、LayoutGroupの影響は受けないのかな?
RelativeLayoutとかで相対指定していた場合の挙動はどうなるんだろ。
座標系も、LayoutGroupからの位置なので、Displayの絶対座標からなのか、
検証しないとなぁ。
ああ、あとアニメーション中(移動中)のViewはクリッカブルにできるのかな?
いっぱい確認したいことがあるや。
下記の用な形で行ける
mView.animate().x(100f).y(100f);
下記を駆使していけば良いや。
AnimatorSet
ValueAnimator
ObjectAnimator
TypeEvaluator
技術的な知見や日々の記録、日常の些細な変化などを綴る雑記ブログです。専門的な技術解説から日記のようなライトな話題まで、特定のジャンルに縛られず、気になったことや面白いと感じた出来事を幅広く発信しています。筆者の視点で切り取った多様なコンテンツが楽しめる、自由な雑記空間を目指しています。
2014/10/30
2014/10/09
2014/08/28
Android WebView ズームコントロール非表示【2026年最新実装】
WebView でピンチイン・ピンチアウトは有効にしたいけど、ズームボタンは邪魔。2014年の古い記事では廃止済み API が紹介されていた。2026年の正しい実装方法をまとめておく。
どちらのフレームワークを使うかで実装が異なる。
2026年:2つの実装パス
パス A:推奨Jetpack Compose を使う場合
@Composable
fun WebViewScreen() {
AndroidView(
factory = { context ->
WebView(context).apply {
settings.apply {
javaScriptEnabled = true
setSupportZoom(true)
setBuiltInZoomControls(true)
setDisplayZoomControls(false) // ← ズームボタン非表示
domStorageEnabled = true
databaseEnabled = true
}
webViewClient = WebViewClient()
}
},
modifier = Modifier.fillMaxSize(),
update = { webView ->
webView.loadUrl("https://example.com")
}
)
}
✅ メリット:
- 最新フレームワーク
- 状態管理が容易
- テストしやすい
パス B:レガシー従来の View 系を使う場合
ステップ 1:XML レイアウト
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
ステップ 2:Activity/Fragment で設定
class WebViewActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_webview)
val webview = findViewById<WebView>(R.id.webview)
val settings = webview.settings
// ピンチイン・ピンチアウトを有効
settings.setSupportZoom(true)
// ビルトインズームコントロールを有効
settings.setBuiltInZoomControls(true)
// ズームボタンを非表示 ← ここが重要
settings.setDisplayZoomControls(false)
webview.webViewClient = WebViewClient()
webview.loadUrl("https://example.com")
}
}
2014年の実装 vs 2026年の実装
| 項目 | 2014年 | 2026年 |
|---|---|---|
| フレームワーク | View(XML + Java) | Jetpack Compose(推奨)or View |
| API | setBuiltInZoomControls() |
同じ(廃止されていない) |
| 非表示方法 | リフレクション使用(廃止) | setDisplayZoomControls(false) |
| コード行数 | 5~10行 | Compose: 15行, View: 8行 |
| セキュリティ | 基本的 | WebViewClient で制御強化可能 |
| パフォーマンス | 標準 | Compose は仮想化対応 |
よくある落とし穴
1. setDisplayZoomControls() を設定し忘れ
❌ 悪い例:ズームボタンが表示される
settings.setSupportZoom(true)
settings.setBuiltInZoomControls(true)
// setDisplayZoomControls(false) がない!
✅ 正しい例:ズームボタンが非表示
settings.setSupportZoom(true)
settings.setBuiltInZoomControls(true)
settings.setDisplayZoomControls(false)
2. JavaScript が必要なサイトの場合
settings.apply {
javaScriptEnabled = true // ← 追加が必要な場合がある
setSupportZoom(true)
setBuiltInZoomControls(true)
setDisplayZoomControls(false)
}
3. セキュリティ設定を忘れずに
settings.apply {
// 安全でない HTTP を制限(Android 9+)
setSupportZoom(true)
setBuiltInZoomControls(true)
setDisplayZoomControls(false)
// 追加セキュリティ設定
mixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW
// ジオロケーション無効化
setGeolocationEnabled(false)
}
webview.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
// URL をフィルタリング
return false
}
}
API レベル別の対応
| API レベル | サポート | 対応方法 |
|---|---|---|
| API 11+ | ✅ | setDisplayZoomControls(false) 推奨 |
| API 19+ | ✅ | 同上 |
| API 21+ | ✅ | 同上 |
| API 29+ | ✅ | Jetpack Compose への移行を検討 |
実装チェックリスト
Jetpack Compose を使う場合
- ☑ AndroidView でWebView をラップ
- ☑ setSupportZoom(true)
- ☑ setBuiltInZoomControls(true)
- ☑ setDisplayZoomControls(false)
- ☑ WebViewClient を設定
- ☑ JavaScriptEnabled が必要か確認
- ☑ セキュリティ設定(mixedContentMode など)
View 系を使う場合
- ☑ WebView を XML レイアウトに配置
- ☑ findViewById で取得
- ☑ setSupportZoom(true)
- ☑ setBuiltInZoomControls(true)
- ☑ setDisplayZoomControls(false)
- ☑ WebViewClient を設定
- ☑ JavaScriptEnabled が必要か確認
- ☑ セキュリティ設定(mixedContentMode など)
2026年への移行:Compose 推奨理由
【従来の View 系】
- レガシーコード
- テストしづらい
- 状態管理が複雑
【Jetpack Compose】(推奨)
- モダンなフレームワーク
- テスト容易
- 状態管理が簡潔
- Android Studio の Compose Preview で動作確認可能
既に View 系で実装済みなら無理に移行は不要だが、新規プロジェクトなら Compose を検討する価値あり。
参考資料
2014/06/15
2014/05/17
2014/05/02
Androidアプリのセキュア設計・セキュアコーディングガイド
メモ
後で読もう。
日本スマートフォンセキュリティ協会
Android Application Secure Design/Secure Coding Guidebook
・http://www.jssec.org/report/android_securecoding_en.html
・http://www.jssec.org/dl/android_securecoding_en.pdf
後で読もう。
日本スマートフォンセキュリティ協会
Android Application Secure Design/Secure Coding Guidebook
・http://www.jssec.org/report/android_securecoding_en.html
・http://www.jssec.org/dl/android_securecoding_en.pdf
2014/04/24
2014/04/15
検索する時のコツ
皆さん、
googleで技術的な情報を調べる(検索)時はどうやってますか?
すごく、個人的な方法ですが、ちょっとお教えしたいと思います。
スマホ関連だと、すぐに情報が新しくなって、
せっかくソースコードのサンプルを見つけたけど、
最近のOSでは動かなかったりする事が多々あるかと思います。
android関連なら、
「android (調べたい物) 2014」
見たいな感じで、年を入れると、最近の情報がヒットしやすいと思います。
是非、お試しください。
もっと良い方法があれば教えて下さい。
googleで技術的な情報を調べる(検索)時はどうやってますか?
すごく、個人的な方法ですが、ちょっとお教えしたいと思います。
スマホ関連だと、すぐに情報が新しくなって、
せっかくソースコードのサンプルを見つけたけど、
最近のOSでは動かなかったりする事が多々あるかと思います。
android関連なら、
「android (調べたい物) 2014」
見たいな感じで、年を入れると、最近の情報がヒットしやすいと思います。
是非、お試しください。
もっと良い方法があれば教えて下さい。
android開発環境構築(Win版)
androidアプリの開発環境構築(Win版)
一番てっとり速い方法 !!
android公式サイトからDLする。
EclipseのADTが設定済みの物がすでにアップされているのでそれを利用した方が良い。
ネットで調べると古いのが多いから、
未だに、Eclipseの公式サイトからダウンロードして
設定している人が大勢いると思うんだ。
まぁ悪い事では無いけど。
Eclipseの日本語化はまたの機会に。
お急ぎの方は、
「Eclipse Pleiades」 で検索してみてください。
でも、Xcodeも日本語じゃないからいっその事、英語のままでってのも有りかな。
一番てっとり速い方法 !!
android公式サイトからDLする。
EclipseのADTが設定済みの物がすでにアップされているのでそれを利用した方が良い。
ネットで調べると古いのが多いから、
未だに、Eclipseの公式サイトからダウンロードして
設定している人が大勢いると思うんだ。
まぁ悪い事では無いけど。
Eclipseの日本語化はまたの機会に。
お急ぎの方は、
「Eclipse Pleiades」 で検索してみてください。
でも、Xcodeも日本語じゃないからいっその事、英語のままでってのも有りかな。
2014/04/12
2014/04/08
レイアウト変更
タイマーが無くて、
やること無くなってしまったんで、
レイアウト変更してみました。
壁の強化が追い付いていません。
てかこのアプリは巨人の生成している間が暇でしょうがない!!
巨人生成中は別アプリをやれって事かなぁ。
2014/04/03
androidのOS
androidのOS別の統計が更新されていました。
OS2.3が17.8%しか、いません。
新規のアプリ開発時はもう4系からでも良さそうな気がします。
ただし、これはグローバル(世界)な値なので、
日本のみを対象にした場合は
もっと、2.3系は多い事が予想されます。
知り合いでいまだに、初代Xperiaを利用している人がいます。
公式はここから確認出来ます。
--------------------------------------------------------
4月
2014/05/29 追記
5月
OS2.3が17.8%しか、いません。
新規のアプリ開発時はもう4系からでも良さそうな気がします。
ただし、これはグローバル(世界)な値なので、
日本のみを対象にした場合は
もっと、2.3系は多い事が予想されます。
知り合いでいまだに、初代Xperiaを利用している人がいます。
公式はここから確認出来ます。
--------------------------------------------------------
4月
| Version | Codename | API | Distribution |
|---|---|---|---|
| 2.2 | Froyo | 8 | 1.1% |
| 2.3.3 - 2.3.7 | Gingerbread | 10 | 17.8% |
| 3.2 | Honeycomb | 13 | 0.1% |
| 4.0.3 - 4.0.4 | Ice Cream Sandwich | 15 | 14.3% |
| 4.1.x | Jelly Bean | 16 | 34.4% |
| 4.2.x | 17 | 18.1% | |
| 4.3 | 18 | 8.9% | |
| 4.4 | KitKat | 19 | 5.3% |
5月
| Version | Codename | API | Distribution |
|---|---|---|---|
| 2.2 | Froyo | 8 | 1.0% |
| 2.3.3 - 2.3.7 | Gingerbread | 10 | 16.2% |
| 3.2 | Honeycomb | 13 | 0.1% |
| 4.0.3 - 4.0.4 | Ice Cream Sandwich | 15 | 13.4% |
| 4.1.x | Jelly Bean | 16 | 33.5% |
| 4.2.x | 17 | 18.8% | |
| 4.3 | 18 | 8.5% | |
| 4.4 | KitKat | 19 | 8.5% |
2014/07/14 追記
6月分を忘れてしまいました。
7月
| Version | Codename | API | Distribution |
|---|---|---|---|
| 2.2 | Froyo | 8 | 0.7% |
| 2.3.3 - 2.3.7 | Gingerbread | 10 | 13.5% |
| 4.0.3 - 4.0.4 | Ice Cream Sandwich | 15 | 11.4% |
| 4.1.x | Jelly Bean | 16 | 27.8% |
| 4.2.x | 17 | 19.7% | |
| 4.3 | 18 | 9.0% | |
| 4.4 | KitKat | 19 | 17.9% |
2014/08/13追記
8月
| Version | Codename | API | Distribution |
|---|---|---|---|
| 2.2 | Froyo | 8 | 0.7% |
| 2.3.3 - 2.3.7 | Gingerbread | 10 | 13.6% |
| 4.0.3 - 4.0.4 | Ice Cream Sandwich | 15 | 10.6% |
| 4.1.x | Jelly Bean | 16 | 26.5% |
| 4.2.x | 17 | 19.8% | |
| 4.3 | 18 | 7.9% | |
| 4.4 | KitKat | 19 | 20.9% |
2014/09/11追記
9月
| Version | Codename | API | Distribution |
|---|---|---|---|
| 2.2 | Froyo | 8 | 0.7% |
| 2.3.3 - 2.3.7 | Gingerbread | 10 | 11.4% |
| 4.0.3 - 4.0.4 | Ice Cream Sandwich | 15 | 9.6% |
| 4.1.x | Jelly Bean | 16 | 25.1% |
| 4.2.x | 17 | 20.7% | |
| 4.3 | 18 | 8.0% | |
| 4.4 | KitKat | 19 | 24.5% |
2014/12/25追記
12月
| Version | Codename | API | Distribution |
|---|---|---|---|
| 2.2 | Froyo | 8 | 0.5% |
| 2.3.3 - 2.3.7 | Gingerbread | 10 | 9.1% |
| 4.0.3 - 4.0.4 | Ice Cream Sandwich | 15 | 7.8% |
| 4.1.x | Jelly Bean | 16 | 21.3% |
| 4.2.x | 17 | 20.4% | |
| 4.3 | 18 | 7.0% | |
| 4.4 | KitKat | 19 | 33.9% |
2014/04/01
登録:
投稿 (Atom)
