仕事やら何やらでサボってしまいました。笑

こんばんは

金曜日は仕事が終わったのが第二の終電(定期外だからやりたくない最後の砦)の時間で、更新する余力が…というか完全に忘れてました←

なんでそんな時間になってしまったかと言うと、表題の件でハマってしまったからですね。

やろうとしてたのは、SurfaceViewを継承したXXXViewクラスを作って、1つのインスタンスで静止画と動画の描画を両方やるというものでした。

もう少し具体的に言うと、データベースに複数毎の静止画又は動画がセットされていた場合に、あるボタンを契機に、ページを切り替えるというものです。
(細かいことは言えないので上手く伝えられないのですが…)

やりたかったのは「静止画→動画→静止画」みたいな切替だった場合の画面遷移において、綺麗に切り替えられるようにする、という感じですね。

で、SurfaceViewというのは、画像の表示に関してはBitmapFactoryクラスで取得したビットマップデータを、CanvasクラスのdrawBitmapで表示するのですが、

動画はそうではなく、MediaPlayerに動画のパスを設定し、Canvasクラスは使わず、SurfaceHolderのインスタンスをMediaPlayerクラスに設定することで、
動画を再生します。

その二つを、同じSurfaceViewでやろうとしていたのですが、考え方が甘かったのかどうしても上手く行かず…

結果としては、継承したXXXViewクラスを、静止画用と動画用の二つに分けて、動画だった場合と静止画だった場合で分けることにしました。

多分上手くやれば出来るとは思うのですが、時間も無くて断念しました。

静止画→動画という遷移だった場合、一旦canvasの描画をクリアして、動画の再生を行う、というものだったのですが、

描画をdrawClororで透過値を書いてクリアモードを指定してクリアするという方法を取ると、
動画再生時になぜか動画の縦横のサイズが0になるという問題が発生してしまったわけです。

音声は再生されるけど、動画は表示されないという罠にハマって、23時過ぎまでかかってもダメでした…

Color.TRANCEPARENTを指定してクリアしたせいなんでしょうか。。
クリア後にその上で黒か透過値255で描けばいいんでしょうかね。

とりあえず火曜日にもう少しねばってみます。

それではそんな感じで!
なんかやたらと意味深な感じのタイトルですね。

こんばんは。

別に、失恋して、その傷は時間が癒してくれるよ…みたいな話ではありません。笑

昨日のblogに書いたSurfaceViewにハマるという件についてですが、昨日の時点では「なんで??どーして??」状態だったわけですが、

お昼休み中に仮眠に入るために目をつぶっている間に思いついたことを試してみたら、あっさり解決しました。
(午前中は別の事をやっていたので本件に関しては何も考えていませんでした。)

深みにハマってしまう意外と単純なことを見落としていたりするんですよねー。
それこそ本当に「お前…それ…初歩やん…」みたいなところで躓いたりするので、不思議ですよね。


プログラミングにおいてもよくあることだと思いますし、他の職業、受験勉強などでも同様の事は起こりえるのでは無いでしょうか。

例えば数学の問題なんかは、感覚が近いように感じるのですが、
一つのやり方に固執してしまって間違いに気付くのが遅くなったり、
最初の計算の時点で間違っていることに気付かず進めてしまい、答えを見たら全然違っていたり、
問題文を勘違いして素っ頓狂なことをしていたり等々…


心当たりはあるかと思います。


そんな時にどうしたら良いかというと、「リセットすること」です。これがすごい大事。
# 「それに気付く」という過程も必要なのですが。

1日とか置かなきゃいけないわけじゃなくて、コーヒー飲んで一息ついたり、何も考えない時間を設けたり(瞑想?)、
そういうちょっとした「タスクから離れる時間」がアイデアを持ってきてくれたりするものです。

# 人間って不思議ですよね。頑張って考えたものより、こういう時の思いつきの方が良かったりするんですから。

こうやって、上手く自分をコントロールして、もっと仕事が出来るようになっていきたいですね。

良い感じにまとまった気がする。

それでは!


たまには技術的な話を少しばかり。

スマホからだし仕事のことだからソースコードは展開出来ないので悪しからず。


Androidアプリ開発に関わっているのですが、
現在表題のSurfaceViewというクラスを使って、画像を表示する機能を作ってます。

組み込み開発なので、多種多様な機種に表示出来るようにしなくてもいいのが楽ではあるのですが、
それでも上手く行かないことばかりですね。


SurfaceViewで、内部ストレージの固定のパスにある画像ファイルを読み込んで表示するだけ(細かく言えばもっと沢山の機能がありますが)なのですが、

なぜかLayoutParamsで指定した通りの場所に表示されてくれないんですよね…

まぁ、SurfaceViewを継承して作った作のViewの中で変なことやってるんでしょうけど、
それが見付からず嵌まっています。

また、フェードインフェードアウトの方法も悩んでます。

ネットで調べた感じだと透過値をいじれば何とかなりそうですが、
仕様的に少し一捻りしないとダメそうなのですんなりいくかは不明ですね。

上手くいったらblogに書こうと思います。

書いてたらうっかり乗り過ごしてしまってテンションがさがってしまったので、
適当な感じですがこれにて失礼します。。

それでは!