みんないいもんたべてんなぁ…
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
aellerton/japng は普通のPNGも一応読めるが、インターレースPNGには対応していない。フォールバック処理で普通にBitmapFactoryで読むようにする。
APNG対応は aellerton/japng_android
を元にAnimationDrawable を使わないようにまるっと書き換えた。ロード直後にデコードしてビットマップ+フレーム時刻のリストにしておく感じ。スパン側で再生開始からの時刻を計算できるようにして、ビットマップのリストから二分探索して適切なコマを探して、次のコマまでの時間を計算する。描画したらHandler#postDelayedで遅延させてTextViewをinvalidateさせる。
画像キャッシュは最後に使った時刻が一定より古い奴を解放するよくあるやつ。管理対象がBitmap直接ではなくAPNGロード後のフレームリストになってる。Bitmapのrecycleを忘れずに行う。
誰の役に立つのか不明だがメモ的に…
API出力からemojisをパースするとこから始まり、文字装飾スパンのカスタム版を書き起こしてステータス中のshortcode部分にセット。スパンが描画されるタイミングで画像キャッシュを探して、なければ裏でロード開始。ロード完了したらTextViewをinvalidateして再描画させる。
描画先がViewでもDrawableでもなくSpanだってのが面倒くさい。ロード完了時やアニメーション時に再描画させる必要があるが、Span単位ではなくView単位でinvalidateするしかない。うちの場合Spanの寿命とViewの寿命は連動してないので、View#setTextのタイミングでテキスト中のスパン全部にコールバックを登録してそれ経由でView#postInvalidate を呼び出してる。
This account is not set to public on notestock.
v1.5.9
- インターレースPNGのカスタム絵文字を表示できなくなっていた
@LoDelinate LINEスタンプだと登録制なので著作権の問題をクリアできたのが大きいと思います
@LoDelinate 日本にはフェアユースという概念がないので、映画の一部引用とか個人がやるとつらいでしょうね
@sakko2005 1.6.1 + 未リリースのいくつかのコミット、って感じです。なお次リリースは互換性のない変更が入る(アプリの動作がおかしくなったりする)ので大手タンスは軒並み躊躇するかと思います
あら、STで PNG decode failed. https://mastodon
.juggler.jp/system/custom_emojis/images/000/000/021/original/tama2.png?1505942847:PngFeatureExceptio
n Interlaced images are not yet supported とか出てる。フォールバック用意しなきゃ
@sakko2005 カスタム絵文字をサポートしてるタンス同士であれば、フィードされてきた絵文字も表示されますよ
loading
can_beer
subwaytooter
hohoemi
nicoru
gauge0
gauge25
gauge50
gauge75
gauge100
downstairs
tanuki
karepiyo
bonus_item
enemy_bullet
beam
player_ship
enemy_ship
64x64までの正方形で50KB以内のPNG画像とショートコードを #こんな絵文字ほしい タグに書くと登録するぞ
This account is not set to public on notestock.