Unity5でアイコンフォントをNGUIで使ってみる。

UILabel、ペースト

Unityでボタン等のアイコン画像をフォントでまかないたいなと思って、

NGUI「UI Label」に入れようとおもったけど、どうやっていれていいかわからなかったのでメモ

1. アイコンフォントで有名らしい「http://fontawesome.io/」を、Unityで入れてみたいと思い入れてみた

※ライセンスにはご注意を!

2. まずダウンロードし、UnityのAssets/Fonts/**.ttfにドラッグ。

※拡張子がttfのものを使おう!

3. でこのあとどうしてよいのかわからくなった、textにいれたらいいんだろう。

サイト内に各アイコンに紐づく、unicodeというもので指定ができる。。

iconfont unicode
iconfont unicode

が、実際にはそれをUI Labelのテキスト内にいれてもアイコン画像は表示されません。

そう、通常unicodeはそのままでは入力できないんです。ただ、実はクリップボードコピーはできちゃいます。

iconfont
iconfont

この画面でコピーw

4. ダウンロードしたフォントデータを開き、使うアイコンテキストをコピーし、UI Label内にペーストする。

UILabel、ペースト
UILabel、ペースト

text内は何の文字も見えない状態ですが、ペーストされていれば、アイコン画像が表示されているはず!

5. これで表示されると思います!

6. 一応上記でも対応できますが、ちゃんとunicodeを入力できるようにする方法がありました。先人の知恵

参考サイトさま:http://nekobata.blog.jp/archives/1032788479.html

Unityで、#UNITY_IOS等の、エディタ上とプラットフォームの判定を勘違いしてた

Unityで、よくAndroidや、iOSの条件分岐かく 「#if UNITY_IOS」等の分岐ですが、

勘違いして使っていました。


#if UNITY_ANDROID Debug.Log("androidだよー"); #elif UNITY_IOS Debug.Log("iosだよー"); #else Debug.Log("unityエディタ含むよー"); #endif

を、Unity上のswitch platformで 『iOS』にしていて、
Unity上で実行したら。。


unityエディタ含むよー

となるとおもっていた。。。汗

違かった。。。

実際は、


iosだよー

と、なった

ほんまアホやった。。


#if UNITY_EDITOR Debug.Log("Unityエディタで実行中だよー"); #elif UNITY_ANDROID Debug.Log("androidだよー"); #elif UNITY_IOS Debug.Log("iosだよー"); #else Debug.Log("その他だよー"); #endif

#if UNITY_EDITOR

これがしたかったやつや。。

さっきのはあくまでswitch platformで指定しているiOSの条件にものでした。。

android studioで、「Error:Execution failed for task ‘:app:validateSigningRelease’. > Keystore file」というエラーが出たら

android studioで、「Error:Execution failed for task ‘:app:validateSigningRelease’. > Keystore file」と出た時

Android Studio2.2を使っていて、いきなり下記エラーにでくわした。


Error:Execution failed for task ':app:validateSigningRelease'. > Keystore file

既存のプロジェクトをファイルをコピーしてから作ったのがよくなかったのかな、
keystore のファイルも新しく作り直したはずなのに、このエラーが消えない

解決策

  • Make Rebuild」や、「Android Studio」を再起動したらエラーがでなくなりましたわ汗

Android Studioで「Error running app: Unknown run configuration type AndroidRunConfigurationType」でビルドできなくなった

Android Studio2.2で、急にビルドができなくなった。

android studio app

Runで実行する「app」がUnknownになって下記エラーになっている。


Error running app: Unknown run configuration type AndroidRunConfigurationType

試行錯誤

1. プロジェクトがおかしくなったのかなと思って、いままで普通に動いていたプロジェクトも実行できなくなっている

2. PC再起動や、AndroidStudioが壊れたかなと思って再インストールして、実行かわらず。JDK周りでエラーがでていたので、次は

3. JDKをインストールしてアップデート

4. 他にもSDK Managerで、プラグイン系を見てみると、Firebase周りで、なんやらエラーが、「Firebase testing」というチェックを外して、[Make Project]をしてみると、、、、

5. 、、、、、!!を、ちゃんとappモジュールがUnkownじゃなくなって、、無事解決!実行できました!!

adbでAndroid端末やエミュレータのファイルを覗く方法

adbで端末やエミュレータのファイルを覗く方法

1. ターミナルを開き、

2. adbでアクセスできるデバイスを確認


$ adb devices

3. adbで端末orエミュレータにアクセスしてファイルチェック

端末にログイン


$ adb -s emulator-5556 shell

対象ファイルがあるかチェック


$ ls -la /data/data/アプリのパッケージ名/files/test.png

※OSバージョンや端末によって使えるlinuxコマンドが限られていそう

端末のファイルをmac等ローカルPCにひっぱってくる


$ adb -s emulator-5556 pull /data/data/アプリのパッケージ名/files/test.png

アプリ内のファイルを確認する。Android Studio2.2でDDMSを開く方法備忘録

DDMSの開く方法

画面上部のメニューから

Tools -> Android -> Android Device Monitor

参考:http://stackoverflow.com/questions/39761453/no-shortcut-for-ddms-in-android-studio-2-2

ありがとうございます!!

Android2.2にアップデートしてから、
DDMSの見方がわからくなってしまってので忘れないようにメモ。。

zxingでQRコードを使っていて、AndroidOS6だけカメラ起動時にエラーがでる点解決方法

zxingでQRコードを読み取るアプリを作っていたのですが、
特定の端末だけカメラ起動時に、

「Androidのカメラに問題が発生しました。デバイスを再起動する必要があります。」

なんじゃこりゃ。。

色々検証してみるとAndroidOS6 (マシュマロ)だけの問題なような、。。

logcatで確認してみると、、


Attempt to invoke virtual method 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference

こういうエラーが。。zxingライブラリの中身でエラー履いてて、
どうしようも。。

でズバリ解決方法は、
ライブラリアップデート!!!

build.gradle(app)


dependencies { 〜 compile 'com.journeyapps:zxing-android-embedded:3.3.0' 〜 }

3.2から3.3にしたら解決w

あと、androidOS6からか、、カメラの扱う許可ダイアログが表示された。。

参考サイト:
http://stackoverflow.com/questions/37685141/nullpointerexception-with-zxing-library-for-qr-scanning-android-app
https://github.com/journeyapps/zxing-android-embedded

Android ImageViewをシルエット化、色々

android シルエット 透過具合調整

黒で塗りつぶし


ImageView.setColorFilter(Color.BLACK,PorterDuff.Mode.SRC_ATOP);

こんな感じに普通のシルエットができます。

android シルエット
android シルエット

透過具合を指定して、塗りつぶし


ImageView.setColorFilter(R.color.my_color_silhouette,PorterDuff.Mode.SRC_ATOP);

R.color.my_color_silhouetteのxmlファイルも一応

colors.xml


<color name="my_color_silhouette">#ee000000</color>

今度はこんな感じ

android シルエットうっすら黒くなるだけ
android シルエットうっすら黒くなるだけ

↑ これだと思うように透過されません。alphaをffにしても透過された状態になる。。

下記のようにparseColorで透過具合を指定すると。


ImageView.setColorFilter(Color.parseColor("#ee000000"),PorterDuff.Mode.SRC_ATOP);
android シルエット 透過具合調整
android シルエット 透過具合調整

無事イメージどおりの透過具合になりました!

Android Studioで、ImageViewの上にTextViewを重ねて文字を中央に表示する

android java 画像にテキスト中央載せ

xmlので下記画像のように画像の上にテキストを中央配置する方法

android java 画像にテキスト中央載せ
android java 画像にテキスト中央載せ

<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <!--背景画像--> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="left" android:id="@+id/hukidasi_image" app:srcCompat="@drawable/ic_haikeigazou" /> <!--中央に載せるテキスト画像--> <TextView android:layout_centerInParent="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAlignment="center" android:gravity="center" android:text="中央画像" /> </RelativeLayout>

ポイントは、

  • ImageViewとTextViewをRelativeLayoutで囲う
  • TextViewのandroid:layout_centerInParent=”true”にする

AndroidのFragmentタブ画像をxmlのImageViewで指定

android fragment タブ カスタマイズ リサイズ
android fragment タブ カスタマイズ リサイズ
android fragment タブ カスタマイズ リサイズ

androidのfragmentでタブ画像をカスタマイズした時のメモ。

MainActivity.java


TabLayout mTabLayout = (TabLayout) findViewById(R.id.tab_layout); mTabLayout.setupWithViewPager(viewPager); mTabLayout.getTabAt(0).setText("").setCustomView(android.R.layout.tab_image_view_1); mTabLayout.getTabAt(1).setText("").setCustomView(android.R.layout.tab_image_view_2);

setCustomViewでレイアウトのxmlファイルを指定するのがポイント。

レイアウトは下記

res/layout/tab_image_view.xml


<ImageView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="80dp" android:layout_height="80dp" android:scaleType="centerInside" android:src="@drawable/hoge_image" />

hoge_imageが表示した画像ファイル