とりあえず移転してみました

ニュースねたや、IT系の記事を書いていくつもり・・・ですが、どうなるかわかりません。まあ、とりあえず やってみます。

android 画像などを透過させるには?

相変わらず、ちまちまとやっていますが、今回も少しはまった件。

透過度の指定

androidのレイアウトで、画像などを貼り付けて透過させたい場合や、色をつけて透過させたい場合の自己(事故)メモ
backgroundで色を指定する時には、色指定の段階で「#00000000」のように8桁の数字(16進数)で指定ができる。
色指定の場合は、6桁の数字(RGB)で指定するのだけど、先頭の2桁が透過度を指定している。
「#FF」からはじめると透過度0なので、下が全く見えない通常の塗りつぶし。

「#00」からはじめると透過度100%なので、色指定も意味がない・・・

色指定では、透過度は0から255での指定ができる。

backgroundにリソースとして登録した画像を指定すると画像表示も可能になる。その場合に、画像を透過させたい・・・


ところが、色と違い透過度が指定できないので、「alpha」で指定できるらしい。検索して透過度と同じように0から255が指定できるらしいので、数値を入れても変化がない。
layoutファイル上で指定する場合は、0から1の間で指定するという情報があったので、変更してみるとできた。

layoutファイルの数値に関しては、ビルドの段階でエラーがでない場合が多いので、何が問題なのか?を判断するのが難しい場合がある。

フォルダの作成と画像ソース

androidでは、機種ごとの解像度に応じて、自動的に画像のサイズなどを拡大、縮小してくれるのだけど、あらかじめそれぞれの解像度に合わせた画像を用意する方法もある。
解像度ごとのフォルダを用意して、そこに画像ファイルを入れるのだけど、フォルダを作成しても表示されない・・・

なんじゃこりゃ・・・

f:id:imsdJava:20170509104453p:plain

これは、できたあとの画像。このように、同じ名前のファイルがフォルダごとに存在している。

複数画像の対応については、以下のURLを参照

複数画面をサポートする | Android Developers

f:id:imsdJava:20170509105438p:plain

フォルダ

  • 「drawable-ldpi」
  • 「drawable-mdpi」
  • 「drawable-hdpi」
  • 「drawable-xhdpi」

を作成し、その中に解像度の異なる画像を同じ名前で入れることで、自動的に解像度に応じて表示してくれる・・・らしい。

だが、フォルダが表示されない。

左上のandroidと表示されている部分をクリックし「Packages」を選択すると表示された。
f:id:imsdJava:20170509104503p:plain

この表示に変えてからフォルダの作成、削除とファイルの格納を行うと「android」に変更しても表示されるようになった。
なんか、面倒・・・

「drawable/画像ファイル名」で指定することが可能になる。

解像度ごとの端末の割合についても、以下のURLに情報が。
ダッシュボード | Android Developers

f:id:imsdJava:20170509110242p:plain

解像度については、androidは機種が多いので、どこまで対応させるのか?悩ましいところ。でも、人気アプリでもないので、無問題だろう(泣)

 

ListViewAdapterではまった・・・positionが0のまま・・・

毎回のようにはまってしまう。androidでListViewというリスト形式のものを表示する場合は、ListViewAdapterという便利なものがある。List形式のものを渡せば、表示してくれて件数が多いと自動的にスクロールする機能まで付加してくれる。

使わない手はない。

難しいコードはないのだけど、はまってしまった。

ArrayAdapterを継承したカスタムクラスを作成し、以下のコード内でリストを表示する。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
        CustomData item = (CustomData) getItem(position);

        if (null == convertView) {
            convertView = layoutInflater_.inflate(R.layout.listdata, null);
        }

CustomDataも独自クラスで、このクラスを使うことで色々な形式のデータを使うことができる。ArrayListとかでもいいけど、CustomDataクラスを作ることで、画像(アイコン)や文字などを一緒に使うことができる。

実行する側の処理も書いて、実行してみると1行しか表示されない・・・ここから色々とデータを確認する。
そもそも、渡しているデータが1行なのか?渡している形式が問題なのか???
など問題となりそうな事を想定して、実行中のデータなどを確認してみても、データがちゃんと数件分渡っている。データが確認できるということは、形式の問題でもない。

なんだろう・・・・

実行中の状態で確認すると、positionがずっと0のままで変化しないのだ。それでは、1件しか表示されないわけだ。本来は、データの件数に応じて、0から加算されないといけない。



問題なのは、getViewメソッド内のpositionの値。

ではやはり、受け取ったデータの件数が少ないのか?そこで、getcount()とメソッドで件数がちゃんと認識できているのか確認するとちゃんとデータ件数の数字と合っていた。

わけわかめ・・・」となって、ネットで検索してみると、ListViewの表示側の問題という内容が。
つまり、コードの中の話ではなく、レイアウトを形成しているxmlファイルのほうだと。表示サイズが最小だと表示できないとかなんとか。

そこで、レイアウトファイルを変更して、最大と指定すると・・・表示された・・・

なんだかなー・・・件数分を取得して、表示が1行分しかないとかなら理解できるけど、データも取得できないって・・・わからん。

実際には、Activity ==> TabLayout ==> PagerAdapter ==> FragmentManager ==> Fragment ==> ListView ==> ListViewAdapter という形で表示する。
Activityで取得したデータをListに表示するだけで、これだけデータの受け渡しが発生してしまう。

ここでも、色々と時間がかかってしまったで、後日まとめよう・・・

 

RIZIN横浜大会の感想と興行の難しさ・・・

RIZINの横浜大会を見ましたが、色々と考えさせられました。というのも、今回の試合で「那須川天心」「堀口恭司」「RENA」の内容と見ると、とても練習だけでは得ることができないくらいのレベルを感じてしまった。
那須川天心選手は、打撃が主体の選手というか・・・MMAはまだ3戦目ですが、とにかく打撃だけで圧倒できる選手。
本当に、100年に1人の逸材だと思う。そもそも、ムエタイのチャンピオンクラス2人にKO勝ちしている時点でレベルが凄すぎる。
小さい頃からやっているから技術的なものもあると思うけど、ムエタイの選手だって小さい頃からやってます。

それでも、違うのは練習量と言いたいところですが、あの強さはやはり「天性のもの」だとしか言えません。

堀口恭司選手は、伝統派空手の出身です。あの独特のステップと飛び込みの速さは伝統派スタイルです。でも、シャドーをみる限りはボクシングテクニックもしっかり持っています。驚いたのが、とにかく身体能力の高さ。
マウントになるような状態で、相手の元谷選手を足に乗っけてそのまま飛ばしましたから。

そういうシーンが何度かありましたから、とにかく力が強いんですね。
反応も早いし。RENA選手もそうなんですが、反応が早い。

相手の動きに対して、素早く対応して危険な状態になる前に動いています。いや、それはみんなわかっているんです。
それがなかなか試合の中ではできないし、わからない。技が決まる頃にしか反応できない。
その前に動けるのが、凄い選手なんですが、3人とも凄かった。

毎日8時間練習して10年経っても、きっとあの領域までは行かないでしょう。いや、8時間も練習したら体のほうが先に壊れます。

それよりも心配になったのが興行としてのRIZIN。今までも沢山のイベントが出てきて、途中で消滅しました。
理由は簡単で、選手が有名になればファイトマネーも高くなる。勝ち続けると有名になるけど、対戦相手がいない。いても、有名で強い選手になるので、またファイトマネーが高くなる。

試合も厳しい内容になるので、定期的な興行も難しくなる。大体、3ヶ月1回くらいのペースですよね。

会場も大きくなるので、設備も大変だし設営のために前日、前々日から借りたりしないといけない。チケットは高くなるので人を埋めるのも大変・・・

いつも、こういうパターン。

しかし、相撲、プロレス、ムエタイ(タイで開催されている試合の場合)は、連日試合をしています。相撲も、13日連続でやります。
プロレスも連日行えます。なので、収入のペースが全然違います。
ムエタイも、タイでは賭けの対象で、毎日のように行われています。選手層が違うというのもありますが、賭けムエタイの場合は、判定での勝ちを最上とするので、無理にKOを狙いに行きません。

4Rまでどちらが勝つかわからない内容で、賭けもヒートアップ。5Rになって、ヒザやミドルの応酬で盛り上がって、判定で賭けた選手が勝つ。そういうのが、盛り上がるいい試合です。

1RからKOを狙うようでは、全く盛り上がらないし結果が見えてしまうと賭けるほうもつまらない。

ミドル、ヒザがポイントが高く、パンチは倒さない限りはポイントにならない。そういう仕組みもムエタイを盛り上げる仕組みだと思います。

日本での興行の場合は、判定よりKO決着を好むので、みんなKO狙いでいきます。結果、選手がみんな怪我だらけで試合が組めない。なんて事も多い。

RIZINも、ちょっと心配です。

 

韓国版「仁」は、ストーリーがね・・・

「仁」と言えば、数年前に放送され、ストーリーがおもしろくて、再放送含めて見ていましたが、韓国でもリメイクされて「DrJIN」として放送されていたようです。再放送を見ていると、韓国版だけど、本家のストーリーをうまく李氏朝鮮時代にあてはめています。

仁でも幕末の激動の時代だったのですが、韓国版でも李氏朝鮮の終わりの時期となっています。大まかなストーリーとしては、現代の医師がタイムスリップして、昔の時代で現代の医療技術で人々を救うという内容なのですが、時代を変えてしまうというジレンマと人を助けたいという気持ちの葛藤が常にあります。

日本版では、幕末という時期でもあり、とにかく色々な登場人物が出てきます。「坂本竜馬」との関係をメインに歴史好きなら知っているメンバーが登場します。幕臣として勝海舟薩摩藩士として、西郷、大久保。幕末なので、朝廷勢力と幕府勢力の争いに、薩摩、長州。更に、土佐藩など諸藩も絡んできます。医師の中でも、東洋と西洋の争いがあり、その関係にも巻き込まれてしまいます。

色々な勢力と登場人物が登場し、はっきり言って歴史を知らないと厳しい部分もあるのですが・・・

あの時代の朝廷と幕府の関係というのも、説明するのが難しいですから、その時点で複雑で藩まで絡んでくれば難しいのは当然で。

ところが、韓国版ドクタージンの場合は、簡単で朝廷勢力を「安東金氏」が牛耳っていて、王族であるイ・ハウンが対抗して、息子を王座に据えて興宣大院君と呼ばれ、息子は高宗となるという比較的わかりやすい。登場人物が・・・あんまり出てこない。というか、李氏朝鮮の場合は、王族と重臣くらいしか出てこない。地方から優秀な人物が・・・というのがほとんどない。

それと比較すると、日本の場合は各藩に優秀な人材がいたように思える。幕府側でも小栗上野介勝海舟松平容保も幕府側として、最後まで戦った。薩摩、長州については、沢山いるけど、これはその後の政権を担ったからだと思う。この時代に登場させようと思ったら沢山いすぎて困るくらい。

ちなみに「高宗」が最後の李氏朝鮮の王となる。国内の勢力争いに、清の軍隊を呼んで解決させたり・・・その対抗勢力は、日本から軍隊を呼ぶという事で、国内の勢力争いが他国間の戦争のきっかけとなってしまう。この時代だけでなく、李氏朝鮮時代を通して、国内の対抗勢力が明や清の軍隊を呼ぼうとするのはいつものこと・・・

豊臣秀吉が攻め込んできた時には、宣祖は都から逃げ出して明に助けを求めている。戦略上、体制が整わないとか戦力的に厳しい場合は逃げるのは問題ないのだけど、都の場合はちと違う。首都が陥落するというのは、政治機能が麻痺するか相手側に渡ってしまうので、反抗作戦も厳しくなる。とにかく、首都だけは死守するというのが当然だと考えるのだが・・・

江戸幕府江戸城無血開城したのだけど、これは「国内勢力」同士の争いだったので、首都が戦場になるのを避けたということだし、幕府としては降参している。
他国の勢力に首都を渡すのは、いつの時代でも全兵力を投入しても防がないとまずい。

そういえば、朝鮮戦争も同じような構図。まずは、北朝鮮軍が南下。対抗できずに、釜山近くまで後退してしまう。そこで、アメリカ軍を主体とする連合軍が加勢する。38度線を超えなければいいものを当時の韓国大統領は、この機会にということで38度線を越えての軍事作戦を匂わせる。38度線を越えてしまうと、今度は中国が脅威と捉え、中国が参戦・・・という感じで、いつも自国の勢力争いに他国が被害を受けてしまう。

 

自分の持っている才能はあるのか???

ブログを書いていても、普段に行っていることも、無意味に思えてしまうことは多々ある。

ブログの内容を色々と考えて書いたり、見やすいように考えて書いても、意味があるのかわからない・・・と感じることは多々ある。

普段行っていることも、「意味があるのだろうか?」と考えてしまう。

自分がやっていることで、「何かの役にたっている」と実感している人はどのくらいいるのだろうか?

自分がやらなくても、誰かが代わりにやるのではないだろうか?

ブログなんて書かなくても、別にいいじゃないだろうか?

こういう気持ちになる時は、その前にやる気があって色々とやった後に襲ってくる場合が多い。やっている時は、あれもしてみようとか・・・これも変更してみようとか。

そうやってやったことに対して、何も変化が感じられない時に、反動で「自分のやっていることなんて無意味」だと感じてしまう。

そもそも、これまでやってきたことも無意味だったのではないか?


自分の持っている才能や力なんて、世の中では必要とされていないのではないだろうか?


それでも、人より少しでも優れた部分があるならば使わないといけないのだろう。それは、自分の努力もあるし、元々の与えられた力かもしれない。

元々、力の強い人や知恵のある人、器用や人、物を作るのが上手い人、絵を描くのが上手い人。
そういう人は、与えられた力だとしたら、その力を自分だけに使うのではなく、他の人の力になり、力の強い人は力の弱い人を助けたり、知恵のある人は、知恵が思いつかない人に知恵をかして、与えられた力というものを、使うことが本命なのかも知れない。

自分には、なんの力や才能があるのだろうか?

 

ネットの情報は嘘だらけというけども・・・空城の計

テレビの討論番組などでたまに「ネットでの情報は信用できない」という感じの発言を聞くことがある。どの部分の事を言っているのかわからないけども、テレビの情報も酷いものだと感じた。

テレビの歴史番組で徳川家康三方原の戦いについての番組で、その中で家康が使ったとされる「空城の計」については三国志演義で登場する「諸葛亮孔明」が使った策として紹介され、家康もこの故事から知っていて使ったと解説されていた。

三国志演義という時点で、そもそも創作感が強いし、家康の使った計も創作というのが最近は言われている。家康も当然知っていただろうし、実際に「空城の計」は使われているので、当然知識としては知っていたと想像できる。

問題なのは、三国志演義の部分で魏の司馬懿仲達が蜀に攻め入り、軍師の孔明と戦い、兵士の少ない孔明が使ったと解説されていた・・・いや、違いすぎる。
家康の例でも、家康から甲斐に攻め込んだ・・・という話になったら変だ。三方原で、家康と武田信玄が戦い、家康が大敗したという事実は変えてはダメで、そのあとで空城の計を使おうが何をしようが「家康が生き残った」のは事実だから問題ない。多少の創作は・・・と思う。

ただ、三国志の話では蜀の孔明のほうから「北伐」として、魏に攻め込んでいる。逆なんだよね・・・そして、魏に進撃していた蜀が要害として重要な街亭という場所を信頼し期待していた「馬謖」に守らせる。方法も指示をして、重要な場所ということも念を押して、副将もつけて行かせた。

ところが、馬謖は街亭の道に関所を作らずに山頂に部隊を配置し、それを見た魏軍は山を囲み、水を絶ち弱らせたところを撃退した。

街亭を取られたことで、全軍を撤退させることにした。その際に、少数の兵と食料を取りに行った際に、魏の司馬懿仲達が率いる部隊が城の近くに現れて、「空城の計」を使うことになる。

つまり、蜀の孔明が魏に攻め込む -> 街亭を取られる -> やばいので逃げる -> 食料を取りにいく -> 敵と遭遇 -> 空城の計 という流れに。

ちなみに、「泣いて馬謖を切る」という諺も、このあとの戦後処理で、街亭を守れなかった馬謖を切った事から諺になっている。
それだけ、馬謖に期待して信頼していた証でもある。


芸能人を格付けする番組では、「干支」の12支についての問題だった。「和」に関する知識ということだったけど、いや、これも違う。そもそも、12支は「動物じゃない」。

中国で使われていた方角や時間などを表すもので、占いでも必ず出てくる。10の干に、12の支を組み合わせて年や月、日を表したりする。

今年は、丁酉年。

10と12の組み合わせなので、60で同じ干支の組み合わせとなる。これが「還暦」で、産まれた年と同じ干支になる。

和と言いながら、全然使われていない。うーん・・・どうなんだろう。

 

AndroidStudioでのエラー色々

バージョン関係の問題は、終わったと思っていたのだけど、まだまだ続く。
JDKを1.8に変更したことに関係してのエラーから。

JDK1.8にアップしたのはいいけど、最新ではないからアップデートしてと言われる。実行しようとしても、エラーになるので調べてみると、前のバージョンが残っていることが関係しているっぽい。
そこで、前のバージョンのアンインストールから行ってみる。

アンインストールを行ってみると、アップデートが可能になった。これで、大丈夫・・・

ところがAndrodStudioが起動しない。エラー内容としてはJAVA_HOME」変えてないだろ?というお怒りだった。

PATHの設定は、変更したはずなのだが・・・「JAVA_HOME」の設定もあったか・・・

コントロールパネルからシステムメンテナンス=>システム=>システムの詳細設定=>環境変数=>JAVA_HOMEの指定を新しいJDKのフォルダに変更する。

AndroidStudioもこれで起動できたので、テストを行うために実行してみると・・・またエラー・・・

エラー内容は、

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\Program Files\Java\jdk1.8.0_121\bin\java.exe'' finished with non-zero exit value 1

調べてみると、ライブラリが多すぎてあきまへん!!!ということらしい。我がままだな・・・

build.gradle(app:Module)のライブラリの部分を変更。
サポートライブラリが多いようなのでv4をコメントアウトしてみる。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile 'com.squareup.okhttp3:okhttp:3.6.0'
    //compile 'com.android.support:support-v4:25.2.0' <==コメントアウトしてみた
    compile 'com.android.support:support-v13:25.2.0'
    compile 'com.android.support:design:24.2.0'

}

これで、実行できた。やっと、タブの実装まで可能になった。

64K を超えるメソッドを使用するアプリの設定 | Android Studio

別の対処方法もあるようなので、貼っておこう

teratail.com

qiita.com


AndroidStudioのバージョンをあげたらファイルをcompileできなくなった | グロースハックする?



ただ・・・タブで表示されている内容を変更するのだけど、どうしたものか・・・
Activityで使っているようなfindViewByIdでIdを指定すればいいという感じでもない。

TabLayout => ViewPager => ViewPagerAdapter => FragmentManager => Fragment

という多重構想になっている。更に・・・Fragment上でListViewも使うので、ListViewAdapterも使う。
もう、なんだか訳わからん・・・

TabLayout => ViewPager => ViewPagerAdapter => FragmentManager => Fragment => ListView => ListViewAdapter => ArrayList