☓☓

主にプログラミングでハマったこととその解決策を覚え書き

Android Studio でレイアウトの背景色を動的に変更する方法

数値を読み込んで、その数値に応じて背景色を変更する処理の雑な覚書

//背景色の設定
setContentView(R.layout.main);    //①
LinearLayout layout = (LinearLayout) findViewById(R.id.layoutView1);    //②
String str = sb.substring(6,11);    //③
layout.setBackgroundColor(Integer.parseInt(str, 16)+0xFF000000);    //④


①setContentViewメソッドで変更したいアクティビティ(ここではmain)を指定。

②main.xml内で使用している、背景色を変更したいレイアウト(ここではLinearLayout)のid(ここではlayoutView1)を見つけてlayout変数に代入。

③strに数値の文字列を代入。変数sbはStringBuilder型で宣言したものだからString型に変換している。substringは指定した要素〜要素までの文字列を返す。今回は、16進数で背景色を指定するために6文字返ってくるようにしている。

④layoutに背景色を指定。色はint型で指定しないといけないから、文字列型からint型に変換している。

UnityRemote4で実機テストする時にうまく動作しない場合の対策(Windows - iPhone)

UnityRemote4使ってWindowsからiPhoneで実機テストしようとしたら
何箇所かハマったので対策をメモ。



*実機を接続したのにEditor SettingsのDeviceに「Any iOS Device」という選択肢が出ない

<対応策>
USB2.0に接続すれば選択肢が出るようです。
複数のUSBポートがあるのであれば、一つずつ挿しなおして確認してみると良いと思います。



*「Any iOS Device」を選択したのに実行しても実機が反応しない
<対応策>
WindowsiTunesをインストールします。
インストールが終わるとデバイスマネージャがApple Mobile Device USB Driverを探してインストールします。
ドライバのインストールまですべて終えてから実行すると、実機で動作しました。



ついでに・・・
*実行したらThe file 'MemoryStream' is corrupted!〜というポップアップが出てきた
<対応策>
プロジェクトフォルダの中にある「Libraryフォルダ」と「Tempフォルダ」を消してから、Unity立ち上げて実行します。
LibraryとTempフォルダは実行時に自動生成されるので、消しても問題ありません。

Wordファイルの変更履歴やらを消す方法(Word for Mac)

第三者にWordファイルをデータで渡すときに
変更履歴とかコメントの日時とか消したい!という場合の対処法。
調べるのに意外と時間がかかったからメモ。
環境:Word for Mac(バージョン15.21.1)

*文章の変更履歴を消したいんです!という場合
①「校閲」タブをクリック 
②「承諾」の▼メニューをクリック 
③「すべての変更を反映」をクリック
これでおしまい。
f:id:tasoco:20160420133037p:plain


*個人情報全て消したいんです!作成者の名前もコメントの日付も、とにかく全部いらないんです!という場合
①「校閲」タブをクリック
②「文書の保護」をクリック 
③一番下にある「プライバシー」の「保存するときに個人情報をファイルから削除する」のチェックボックスをチェック
④「OK」をクリック
この状態でファイルを保存すれば、個人情報を全て消すことができます。
特に、コメントは残しておきたいけど、コメントの日時やら変更履歴は消したいな、という時に使えます。
ただし、誰がどのコメントを作成したのかまでわからなくなってしまうので注意。
f:id:tasoco:20160420134723p:plain

InstagramにGIF動画を載せる方法

Instagramに動画をのせることができるので
短いアニメーションをのせたい!!
と思ってGIFのパラパラ漫画アニメをのせようと思ったのですが・・・
なんと、InstagramにはまだGIFアニメをのせる機能はないのです(2015年12月9日現在)

これを機にいろいろ調べてみたので3種類まとめておきます。

*「Boomerang」というアプリでGIF動画を作る!
これは、動画を撮影すると自動で無限ループするGIFに加工してくれるスマホアプリ。
このアプリでGIFを作ればそのままInstagramにのせることができる!!
・・・でもパラパラアニメをGIFにしたいという今回の目的とは違います。次。


*「GIFMAGAZINE」というWebサイトを利用!
GIFアニメ好きの画像検索&作成コミュニティ - GIFMAGAZINE
このサイトでパラパラアニメを作ればInstagramGIFアニメをのせられるようなのですが・・・
ユーザ登録しないと使えないようで、煩わしくてやめました。
登録が面倒でない方は、使ってみるのもいいと思います。
自分は次の方法を考えます。


GIF動画を作って動画変換!
スマホで撮影した動画なら投稿できる。GIFじゃなきゃいいじゃないか。
ということで、作ったGIFを動画形式に変換して投稿しました。
以下のサイトを利用させていただきました。どちらも有名なサイトさんだと思います。
GIFアニメの作成
GIFアニメ(アニメーション)作成 | 画像加工編集サイト・フリーソフト:無料写真加工ならバナー工房
GIFアニメを動画形式に変換
GIFファイルを動画ファイルへ変換


ここまできて、動画は3秒以上じゃないと短すぎて投稿できないことを思い出しました。
私の作ったものは1秒。短い。でも大丈夫。連続で3回まわして3秒ぶんにします。
投稿した動画は下のとおりです。

はてなブログにInstagramのウィジェットとフォローボタンを設置

とっても簡単。

画像のウィジェットSnapWidgetというサイトで作成。
フォローボタンはInstagram Forrow Buttonというサイトで作成。

吐き出されたコードを使えば一瞬で設置が完了します。便利ですね。

LINEスタンプ

つい最近、LINEスタンプの承認が通りました。
むきむきのねこさんです。


●むきむきにゃんこ
f:id:tasoco:20150519112941p:plain

これまで、2回申請し、どちらも承認されるまでに3ヶ月ほどかかったのですが、
今回は申請から1ヶ月半ほどで認証されました。
審査のスピードが上がってくれたので、申請させていただく側としては嬉しい対応です。
以下は、これまでに出しているスタンプです。ねこさん大好きです。


●ゆるふわにゃんこ
f:id:tasoco:20150519112953p:plain


●後回し系女子
f:id:tasoco:20150519112956p:plain

Processingで音楽にあわせてアニメーション

Processingを使って何か作ってみたいなーということで、
メロディーに合わせてリアルタイムにグラデーションの円を描画するプログラムを作ってみました。

このプログラムでやりたかった処理は以下3つです。
1.音楽ファイルを再生
2.音楽をFFT
3.グラデーションのかかった円を描画


ソースコードは以下のとおりになりました。

import ddf.minim.analysis.*;
import ddf.minim.*;

//1.音楽ファイル再生関係
Minim minim;
AudioPlayer player;

//2.FFT関係
FFT fft;

void setup() {
  size(800, 600);
  colorMode(HSB, 360, 100, 100, 100);
  noStroke();
  smooth(); 

//1.音楽ファイル再生関係
  minim = new Minim(this);
  player = minim.loadFile("music.mp3", 512);

//2.FFT関係
  fft = new FFT(player.bufferSize(), player.sampleRate());

//ここで音楽再生
  player.play();
}

void draw() {
  background(#FFFFFF);

  int offset1 = 8;
  int offset2 = 150;
  int specSize = fft.specSize();

//3.左チャンネルに応じてグラデーションの円を描画
  fft.forward(player.left);
  for (int i = 0; i < specSize; i++) {
  float h = map(i, 0, specSize, 0, 360);
  int e_width = (int)((int)fft.getBand(i) * (h/offset1));
  if (0 <= h && h <= 360 && e_width >= 10) {
    int x = (int)random(0, 800);
    for (int w = e_width; w > 0; w -= 2) {
      fill(h, w-1 * 100 / e_width, 100, 50);
      ellipse(x, h+offset2, w, w);
    }
  }
}

//3.右チャンネルに応じてグラデーションの円を描画
fft.forward(player.right);
  specSize = fft.specSize();
  for (int i = 0; i < specSize; i++) {
    float h = map(i, 0, specSize, 0, 360);
    int e_width = (int)((int)fft.getBand(i) * (h/offset1));

    if (0 <= h && h <= 360 && e_width >= 10) {
      int x = (int)random(0, 800);
      for (int w = e_width; w > 0; w -= 2) {
        fill(h, 100 - w * 100 / e_width, 100, 50);
        ellipse(x, h+offset2, w, w);
      }
    }
  }
}

void stop() {
  player.close();
  minim.stop();
  super.stop();
}

プログラムの実行結果で出てくるアニメーションをキャプチャしたのが以下の画像です。
f:id:tasoco:20150403092527p:plain