問題タブ [android-drawable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android での StateListDrawable の動作がクリアされていない
使用しようとすると、非常に奇妙な現象が発生しますStateListDrawable
。
コンストラクターでImageView
使用するを拡張するビューがあります。StateListDrawable
問題を提示するために、2 つのコード スニペットがあります。最初の1つ:
そして2番目のもの:
}
(このコードがあまり意味をなさないことはわかっています。問題を単純化して、質問をより明確にしたかったのです)。問題は、最初のシンペットですべてが正常に機能することです。ドローアブルにカラーフィルターを設定すると、表示されます。しかし、2 番目のスニペットでは、StateListDrawable
インスタンスがフィルターになんらかの影響を与え、を呼び出して に接続したことがないにもかかわらず、元のドローアブルが表示されています。ImageView
setImageDrawable(states)
誰かが私に何が起こっているのか説明できますか? 私の目標はStateListDrawable
、次のように、さまざまな状態に対して同じドローアブルを使用することです。
(ドローアブルはリソースとしてではなく、ネットから動的にロードする必要があるため、コードで行う必要があります)
android - Android のグラデーション ドローアブル: Eclipse のスクリーンショットの品質が低い
グラデーションのある背景には、次のようなドローアブルを使用しています。
これにより、エミュレーターにバンド付きのグラデーションが発生し、(Eclipse を使用して) エミュレーターのスクリーンショットを撮ると、結果はさらに悪くなります。
なんで?そして、この問題を解決するにはどうすればよいですか?それは私がandroid:dither="true"
drawablesのXMLで使用していて、これをActivity
'sで設定していますがonCreate()
:
ちなみに、青い部分がネイティブのアクションバーで、グレーのグラデーションがListView
背景のドローアブルのある行です。
android - YuvImage から Drawable
YUV 形式の byte[] データがあり、Drawable を作成したいと考えています。
これを行う長い方法は、RGB -> Bitmap -> BitmapDrawable に変換することです。
もっと簡単な方法は YuvImage を作成することですが、jpeg に圧縮せずに Drawable を作成することは可能ですか?
android - ボタンのような形を作る
セレクターシェイプを使用してカスタマイズしているボタンのグループがあります。これが私がこれまでに持っているもののコードと画像です:
CODE-bgbtn.xml
そしてこれの結果:
フラットすぎるように見えるので、最初のボタンにのみスタイルを適用しました。ボタンのように見せるためにどうすればいいですか?
android - Android は、プログラムで描画可能な境界線を作成します
リスト項目の背景としてドローアブルを作成します。私はxmlでこのようなものを描こうとしています:
したがって、境界線を上下左右の 2 つの側面に描画し、右下隅に「L」を描画する必要があります。上と左の境界線を作成するのに問題はありませんが、右下隅に L を作成する方法が想像できません。PS: L の寸法は固定され、drawable の寸法とは独立している必要があります。ありがとう
android - ドローアブル draw() 呼び出しがさまざまなデバイスで同時に実行されない
拡張するアクションバー用のカスタムドローアブルがありますGradientDrawable
。私はドローアブル自体が私が望むものを正確に描画しますが、私の問題は描画するときのようです。Nexus デバイスで開発したところ、期待どおりに動作しましたが、Nexus 以外のデバイスで実行すると正しく機能しません。draw(Canvas canvas)
Nexus 端末と同じレートで通話が行われていないことを突き止めました。設定を調整した後、アクションバーのドローアブルを同じドローアブルに置き換えるコード行を追加しました。これにより、すべてのデバイスで動作するようになりましたが、ユーザーが画面をドラッグしたときに発生するドローアブルを常にリセットするのは好きではありません。これは単に懸念事項ではありませんか?メーカーは本当に描画システムをそれほど変更することができますか? 何か案は?デバイスの結果とコードを以下に示します。
ドローアブルの draw() メソッド
パラメータの設定
私が電話する必要のないデバイスsetBackgroundDrawable()
*
- ギャラクシー ネクサス (4.2.1)
- ネクサス 10 (4.2.1)
- ネクサス 7 (4.2.1)
- ネクサス S (4.2)
- モトローラ Xoom (4.0.4)
電話をかける必要があるデバイスsetBackgroundDrawable()
*
- トランスフォーマープライム (4.1.1)
- ギャラクシー タブ 7.0+ (4.0.4)
- エイサー A500 (4.0.3)
あまり気にしないドローアブルをリセットするオーバーヘッドがない場合、Nexus デバイスがすべて invalidateSelf() の後に描画し、製造元のデバイスが描画しないのは奇妙に思えます。誰でも入力がありますか?
android - Android OutOfMemory例外-私のニーズに対応する別のアプローチはありますか?
私のアプリは大きな画像(家の間取り図)を読み込んでから、その画像にタッチ反応性のオブジェクト(家具、ランプなど)を描画しています。アプリにベースイメージファイルが含まれていますが、オブジェクトはデータベースの座標から取得されます。
アプリを複数の反復で正常にデプロイしましたが、より大きなベースイメージを使用する必要があり、多くのデバイスで例外BitmapFactory
が発生OutOfMemory
しています(古いデバイスと新しいデバイスの両方。ヒープが32MB未満のものはクラッシュするようです)。SOに関する157のOOMの質問を読みましたが、解像度/ズームはアプリの機能にとって重要であるため、それらすべてが指していると思われる リンクは役に立たないのではないかと思います。
ロードする前にデバイスの使用可能なメモリをテストしようとしましたが、結果はせいぜいむらがあります(Galaxy S3などの一部のデバイスは大量のヒープを報告しますが、それでもクラッシュします)。解像度を下げてみましたが、上記のテストで安全なサイズに縮小すると画像が使えなくなりました。
ビットマップを使用せずにこのデザインを実装する別の方法はありますか?する必要がある:
- 大きなベースイメージをロードする
- ベース画像の上にクリック可能な形状を作成し、ベース画像に対する位置/スケールを維持します
- ボーナス:iOSバージョンのアプリでは、SVGスタイルのテキストスケーリングを実行できるため、小さなオブジェクトの長いラベルは、マップ上を走る代わりにオブジェクト内に留まります(画像がズームされるまで表示されません)。これをAndroidで複製すると、私は幸せなコードモンキーになります。
必要に応じてコードを投稿できますが、皆さんは以前にそれを見たことがあります(ほとんどすべてがSOからのものです)。
読んでくれて、そしてあなたが与えることができるどんな助けにも前もって感謝します。
android - Android 4.2 9-パッチの背景は、古いOSバージョンとは異なる方法で描画されます
Android4.2.1を搭載したNexus7を使用していますが、アプリで一部の線形レイアウトに使用している背景画像が正しく描画されていないことに気付きました。古いバージョンのAndroidOSを搭載した他のデバイスでは、9パッチの背景が正しく描画されますが、このデバイスでは、境界線が引き伸ばされるべきではないときに引き伸ばされます。
正解(Evo 4G v2.3.5): http ://i.imgur.com/WDTNr.png
不正解(N7 v4.2.1): http ://i.imgur.com/HntMY.png
何がこれを引き起こしているのか考えていますか?そうでない場合は、9パッチ画像を使用せずにこれらのビューの黒い境界線を取得する他の方法はありますか?
編集
9パッチファイル: http: //i.imgur.com/LDoBE.png
9-エディターツールのパッチ:http: //i.imgur.com/UoydG.png
それを使用したレイアウトxmlセクション(leftbordergraybkg):
android - Android インセット透明ドローアブル
だから私は以下に示すようにPNGを持っています。画像の白いインナーは透けます。
私の問題は、この画像が Android デバイスのさまざまなサイズの画面に対して実際にはスケーラブルでないことです。
コードまたはできればxmlでこれを行う方法を知りたいです。基本的に、透明な円がはめ込まれた灰色の正方形を探しています。
また、グレーの内側の境界線に素晴らしい効果がありますが、これはコードで可能ですか?
逆(角が丸いビットマップ)を行う方法は知っていますが、どうすればよいですか?任意のアイデアをいただければ幸いです。
編集:
だから、私が試した唯一のことはandroid:scaleType="centerCrop"
android - 「ライト」バージョンを自動ビルドする方法
無数の異なるボタン用に多くのグラフィックスを備えたアプリを作成しました。すべてのボタンのすべてのグラフィックはdrawable-xhdpi
、 、drawable-hdpi
、drawable-mdpi
およびで拡大縮小されて複製されますdrawable-ldpi
。
最初の 2 つのディレクトリのグラフィックスの量は約 3.5MB ですが、アプリ全体は約 7.5MB です。
ローエンドのスマートフォンを持っている人にダウンロードして 3.5MB のまったく役に立たないグラフィックでメモリをいっぱいにするように頼むのは明らかにおかしいので、そのlite
ような人のために 1 つの " " バージョンを作成することにしました。
次のような定数が必要です
true に設定すると、ビルドは自動的にグラフィックスを除外xhdpi
します。hdpi
現在、私が持っている唯一の解決策は、手動でこれら 2 つのディレクトリを移動し、ライト バージョンをビルドし、ディレクトリを元に戻して完全なバージョンをビルドすることです。明らかに最適ではありません。