FC2ブログ
    08 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 10

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    今までとはちょっと違いファンタジー風ゲーム作成はじめました 

    はいはい、もう月曜日ですね。坂内です。

    ちょっと趣向を変えて、ファンタジー風ゲームの企画開発はじめました!
    バージョン1は、10月中には公開したいと思います!
    簡単に遊べて、ぐいぐい引き込まれるゲームです!


    こんな感じの雰囲気です。

    えぇ、ネタがなくなってきたので、新しいアプリの宣伝です。

    あ、あとGagSoundなのですが、使っていただいている方いますか?
    「こんな音ほしい」とか、「こういう音あったらいいんじゃな?」みたいな意見ばしばし取り入れますので、是非興味のある方、コメントにでも書いてください!直接メールでも構いませんよ!

    それ以外のアプリでも、どんどん良い要素は取り入れていきますので、コメント頂きたいと思います!

    以上!中身あんまりないけど、本日はこの辺で!

    Category: その他日記

    tb 0 : cm 0   

    【Java】アラームサービスについて① 

    (」・ω・)こんにちは~
    大坂です。

    今週の木曜日にLockPickerがアンドロイダー公認アプリとなりました!
    GagSoundもお気に入り機能を追加し、サウンドを20種類から36種類にしてアンドロイダーの新着アップデートに取り上げられました!
    是非、ダウンロードしてみてください!お願いします!!

    こっそり輝度チェンも設定数を2個から10個の間で変更できるようにアップデートしたのですが、なんとか取り上げてもらえないものですかね・・・?

    さてさて、今週は輝度チェンをアップデートしたり、ドット絵をいじってたりとネタがないんですがタイトルの通り、アラームサービスについてです。
    まずは受け取るクラスを作成。今回は何もせず。
     public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    Log.d("AlarmReceiver", "とったど~");
    }
    }

    あとは、作成したクラス用のインテントを作成して、アラームに登録して終わりですね。
     // アラーム用のインテントを作成
    Intent alarmIntent = new Intent(this, AlarmReceiver.class );
    // 登録するタイプを設定(後で変更に使ったり)
    alarmIntent.setType("0");
    alarmIntent.setAction("ALARM ACTION");
    // アラーム登録用のペンディングインテントを作成
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, ALERM_EVENT, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT );
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    // アラームに登録
    alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);

    今回は短いですが、こんな感じです。

    間違いとかあったら教えてください!

    ではでは、また来週(´・ω・)ノシ

    Category: 開発日記(Java)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【Unity】いらいら玉の課題やバグ 

    水曜日担当の秋山です。

    いらいら玉出てから1週間以上経過しました。
    課題やバグなど少し見つかってきたので書いてみます。
    Unity上では問題なく表示されていても、やはり機種ごとの仕様によりバグが出ますね。

    【課題】
    ・容量の削減
     27MBあるので追加ステージなどを考えていくと後々厳しくなりそう。
    ・スマートフォン傾きの位置調整
     スマホの水平状態を傾きなしとして判定しているので、奥に傾ける場合に画面が見ずらくなる。
     ユーザー側のほうで水平状態の位置を設定できるようにすることを検討しています。

    【バグ】
    ・メニュー画面のタイトル文字が反転している。
     →Nexus7
      実際の画面がどう表示されるか不明で情報待ちです。
      ただNGUIに変更すれば解決できるのかなと現在訓練中です。
    ・9面の動く床が表示されない。
     →AQUOS PHONE
      床板を厚さ0で作ったのが原因?厚さがある動く床はきちんと表示されていたので。

    バグなど見つけた方はご連絡頂けると幸いです。
    修正版を早急に出せるようにがんばります!

    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【Java】タブの実装について 

    月曜日です。今日は祝日ですが、そんなものありゃしません。
    ってことで、ブログです。あ、坂内です。

    先週の金曜日ですが、「GagSound」バージョンアップしました!!
    サウンドがなんと「36!!」種類に増量!
    そしてお気に入り機能が追加されました!
    これで、気に入ってるサウンドだけのリストを用意できます!
    お気に入りへ入れるには、気に入ったサウンドを長押しでできます。
    逆にお気に入りから外す場合は、お気に入り状態のサウンドを長押しで外すことができます!

    【Gagsound】
    https://play.google.com/store/apps/details?id=com.halcyon.gagsound

    よろしくです!

    で、今回は、このバージョンアップに伴いタブを実装しました。
    そのことについて少し。

    タブを実装するに当たり必要なものは以下になります。
    (タブの切り替えが2つの場合を想定)
    タブ部分に表示する画像
    タブ画像のSelector
    ③Layout
     - Tabを配置し、メインとなるActivity
     - 中身①Activity
     - 中身②Activity
    ④各Layoutに付随するActivity

    ①:タブが選択されている時と、されていない時の絵を用意します。
     ファイルの配置は、drawableの直下とします。

    ②:①で用意した絵の切り替え用のSelectorになります。
    ●tab1.xml
    絵のファイル名を「tab1_normal.png」「tab1_selected.png」とした場合は以下のようになります。
    <?xml version="1.0" encoding="utf-8"?>
    <selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
    android:state_selected="true"
    android:state_pressed="false"
    android:drawable="@drawable/tab1_selected" />
    <item android:drawable="@drawable/tab1_normal" />
    </selector>


    ●tab2.xml
    絵のファイル名を「tab2_normal.png」「tab2_selected.png」とした場合は以下のようになります。
    <?xml version="1.0" encoding="utf-8"?>
    <selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
    android:state_selected="true"
    android:state_pressed="false"
    android:drawable="@drawable/tab2_selected" />
    <item android:drawable="@drawable/tab2_normal" />
    </selector>


    ③Layoutを作成します。
     ●Tab自体を配置するメインActivity
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:id="@+id/layout_root"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#FFFFFF"
    android:orientation="vertical">
    <TabHost
    android:id="@android:id/tabhost"
    android:background="#FFFFFF"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:padding="1dp">
    <TabWidget
    android:id="@android:id/tabs"
    android:layout_width="fill_parent"
    android:background="#FFFFFF"
    android:layout_height="wrap_content"/>
    <FrameLayout
    android:id="@android:id/tabcontent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:padding="1dp"/>
    </LinearLayout>
    </TabHost>
    </LinearLayout>


     ●切り替わる中身1
      お好みのLayoutを用意
     ●切り替わる中身2
      お好みのLayoutを用意
    ④各Layoutに付随するActivityを用意
     こちらもタブを配置するメインのActivityのみを記載します。
     切り替わるLayoutに付随のActivityはお好みでどうぞ。
     

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tab);
    Resources res = getResources();
    TabHost tabHost = getTabHost();
    TabHost.TabSpec spec;
    // Tab1
    intent = new Intent().setClass(this, AActivity.class);
    spec = tabHost.newTabSpec("TAB1")
    .setIndicator("tab1", res.getDrawable(R.drawable.tab1))
    .setContent(intent);
    tabHost.addTab(spec);

    // Tab2
    intent = new Intent().setClass(this, BActivity.class);
    spec = tabHost.newTabSpec("TAB2")
    .setIndicator("tab2" , res.getDrawable(R.drawable.tab2))
    .setContent(intent);
    tabHost.addTab(spec);

    // Set Default Tab - zero based index
    tabHost.setCurrentTab(0);
    } 


    これで大体完成です!
    好きなだけタブつけちゃってください!
    では!

    Category: 開発日記(Java)

    Tag: Java  タブ  Android   
    tb 0 : cm 0   

    【Java】ツリー構造のListViewみたいなものを作成してみた_続き 

    今週も花金がやってきましたね!大坂です。
    花金とか死語ですか?そうですか?そうですね。

    では先週書いたツリー構造のListViewの続きで、チェックボックスの値の取得(?)方法について。

    簡単に言ってしまうと、チェックボックスをクリックするたびに
    「SparseBooleanArray」のデータ入れ替えるだけなんですけども。

    前回コードを基本に抜粋して説明していきます。

    クラス変数に「SparseBooleanArray」とキーに使う「int」変数を準備し、
    チェックボックス作成後、「ID」と「SparseBooleanArray」に
    「false」を設定(チェック入りが初期値の場合、「true」を設定)
    では、コードです。
     // フィールド変数
    SparseBooleanArray checkboxArray = new SparseBooleanArray();
    int childCheckId = 0;

    public void setGropuView(String group, String[] groupChild) {
    /** 省略 */

    // チェックボックスの作成
    final CheckBox childCheck = new CheckBox(this);
    // IDの設定
     childCheck.setId(childCheckId);
    // SparseBooleanArrayにfalseを設定
    checkboxArray.put(childCheckId, false);
    // 次のループ用に「childCheckId」をインクリメント
    childCheckId++
    }

    これでループ毎にそれぞれのチェックボックスに紐づいた「SparseBooleanArray」が作成できますね。
    あとはチェックボックスをクリックしたときに値を入れかていってあげるだけですね。
     // チェックボックスのクリック処理
    childCheck.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    // チェックが入っているとき
    if(childCheck.isChecked()) {
    // チェックを外す
    childCheck.setChecked(false);
    // 「SparseBooleanArray」をfalseに設定
    checkboxArray.put(childCheck.getId(), false);
    // チェックが入っていないとき
    } else {
    // チェックをいれる
    childCheck.setChecked(true);
    // 「SparseBooleanArray」をtrueに設定
    checkboxArray.put(childCheck.getId(), true);
    }
    }
    });

    チェックボックスのIDをキーとしているのでこんな感じで設定できますね。
    あとは今回でいえば「0」からキーを設定しているので順番に取得していくだけです。
    こんなコードはいらないと思いますが。。。
      for(int i = 0; i < checkboxArray.size(); i++) {
    Log.d("checkboxArray_" + i, "" +checkboxArray.get(20000 + i));
    }


    以上で、前回の記事で作成したなんちゃってツリーListViewから
    チェックボックスの値も取得できるようになります。

    「もっといい方法があるよ!」や「なんだか全然わからないけど!」という方がいたらどんどん連絡くださいね!

    ではでは、また来週(´・ω・)ノシ

    Category: 開発日記(Java)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【Unity】UnityでのKeystore作成について 

    こんにちは水曜担当の秋山です。

    昨日はアプリリリースで日記が間に合わなかったので本日書きます。

    ようやく1個目のアプリリリースできました!
    「いらいら玉」プレイしていただいて感想などを頂けるとうれしいです!

    今日はUnity上でKeystoreの作成手順を書きます。

    1・Unity上で「File」→「Build Settings」ウィンドウを開きます。
    2・ウィンドウから下段にある「Player Settings」のボタンを押すと「Inspector」画面に「Player Settings」が表示されます。
    3・Inspector画面から「Publishing Setting」の項目を開きます。
    4・「Create New Keystore」のチェックを入れ「Browser Keystore」を押します。

    20130919_03.png

    5・ファイルマネージャが起動するのでKystoreの保存先を指定し名前をつけて保存してください。
    6・「Keystore password」からパスワードを設定してください。(6文字以上)
    7・「Confirim passowrd」も確認用ですので同じパスワードです。
    8・「Alias」の項目で「Create a new key」を選択します。
    20130919_05.png
    9・「Create a new key」ウィンドウが出るので以下の項目を設定してください。
      Alias:名前
      Password:パスワード
      Confirm:パスワードの再入力
      Validity(yeas):有効期間(最大1000年)
      Country Code:国番号(日本だと81)
     
    上記のみでもKeyは作成できます。他の入力項目は

      First and Last Name:作成者の名前
      Organizational Unity:部門名
      Organizational:組織名/会社名
      City or Locality:市区町村郡名
      State or Province:件名

    最後に「Create Key」を押して完成です。
     
    20130919_06.png

    実際に使う場合は
    10・Inspector画面から「Publishing Setting」の項目を開きます。
    11・「Use Existing Keystore」のチェックボックスを選択。
    12・「Browser Keystore」を押し利用するkeystoreファイルを選択。
    13・項6で入力したKeystore passwordを入力。
    14・「Alias」の項目で作成したKeystoreファイルを選択。
    15・項9で入力したパスワードを入力

    20130919_07.png

    以上の作業を完了後Buildを行うとKeystore入りapkの完成です。

    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    玉を転がし落とし穴や障害物をさけて最速ゴールを目指せ!! 

    アプリリリースのお知らせです!

    玉ころがしのバランスゲーム「いらいら玉」公開しました!

    https://play.google.com/store/apps/details?id=com.halcyon.irairatama

    qr_irairatama.png


    端末の傾きで玉を転しゴールを目指すバランスゲームです。
    さまざまなステージでいらいらする罠を避けながら最速ゴール目指します。
    ステージ毎のクリアタイムをランキングで競い合いましょう!

    今後さらにステージ追加や謎解き要素などの追加を予定しています。

    Category: Androidアプリ紹介

    Thread: みんなに紹介したいこと

    Janre: ブログ

    tb 0 : cm 0   

    変態必見!?下着泥棒ゲームリリースしました!ww 

    アプリリリースのお知らせ!

    変態さんいらっしゃい!「下着どろぼぅ!」公開しました!

    https://play.google.com/store/apps/details?id=com.halcyon.shitagidorobo



    アプリ説明:
    住民に見つからずに下着を盗みまくれ!
    タップ連打で下着をとれるゾ!
    見つかると1発アウト!この緊張感たまらない!

    Category: Androidアプリ紹介

    Thread: みんなに紹介したいこと

    Janre: ブログ

    tb 0 : cm 0   

    【Unity】Unity&Orthelloによる2Dゲーム作成④ 

    こんにちわ。
    坂内です。月曜休みということで火曜になっちゃいました。

    ええと、Unityにおける「ボタン」についてちょっと私見を。

    ボタンを画面に置きたい場合、GUI.Buttonを使うといいようなことが、色々なホームページでみることがあります。
    で、使ってみたんですが、以下の問題が発生!

    まずGUIを使うと画面に表示されなくて、分かりずらい!
    実行しないと確認ができない!という感じに。

    これ、OnGUIを使うクラスの上に、[ExecuteInEditMode]をつけると実行しなくても見えるようになりますね。


    using UnityEngine;
    using System.Collections;

    [ExecuteInEditMode]
    public class Test : MonoBehaviour {
    void OnGUI(){
    GUI.Button(new Rect(100,100,100,100),"test");
    }
    }


    この問題は収束。

    次の問題、画面解像度によって位置の変更や、サイズの変更。
    そして文字サイズの変更が必要になる!

    これ、ちょーめんどいです。
    これ対応しないと、GalayxS3のような画面解像度が高い携帯だととんでもなくボタンも文字も小さくなってしまいます!

    で、GUIやめました。

    では、どのようにボタンを表現しているかといいますと、Orthelloの場合はSpriteを置いて、Rayを使用しています。

    RayとRaycast。これ何かといいますと。
    「空間内の指定した原点から特定の方向に伸びる線のことを光線と呼びます。光線は、その名前の通りのイメージです。空間上の任意の開始点から、特定の方向に無限に伸びる線を値として表現できます。」
    どこかの引用。

    ということで、タップした座標から奥に向けてビームを打ちます。
    これにオブジェクトが当たったら「ボタン押した」とか「ボタン離した」の判定をします。

    ボタン押した時と離した時の処理を書くことで、ボタンの動きを表現できます。
    以下、ボタンの例です。

    using UnityEngine;
    using System.Collections;

    public class ButtonTest : MonoBehaviour {
    const int BTN_A = 0;
    const int BTN_A_PUSH = 1;
    bool btnAPushFlg = false;
    Ray ray;
    RaycastHit hit;

    void Update () {
    if(Input.GetMouseButtonDown(0)){
    ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if(Physics.Raycast(ray , out hit)){
    // testボタン押下.
    if(hit.transform.name == "btnTest"){
    btnAPushFlg = true;
    OT.Sprite("btnTest").frameIndex = BTN_A_PUSH;
    }
    }
    }
    if(Input.GetMouseButton(0)){
    ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if(Physics.Raycast(ray , out hit)){
    // testボタンおしっぱ.
    if(hit.transform.name == "btnTest" && btnAPushFlg){
    btnAPushFlg = true;
    OT.Sprite("btnTest").frameIndex = BTN_A_PUSH;
    return;
    }
    }
    btnAPushFlg = false;
    OT.Sprite("btnTest").frameIndex = BTN_A;
    }
    if(Input.GetMouseButtonUp(0)){
    ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if(Physics.Raycast(ray , out hit)){
    // testボタン離す.
    if(hit.transform.name == "btnTest" && btnAPushFlg){
    btnAPushFlg = false;
    OT.Sprite("btnTest").frameIndex = BTN_A;
    // ここにボタン押した時の処理を書く.
    }
    }
    }
    }
    }


    こんな感じでやってます。

    説明をば。

    初めの、
    const int BTN_A = 0;
    const int BTN_A_PUSH = 1;
    ですが、これはテクスチャアトラスの番号です。
    ボタン系の絵はすべてアトラスで管理しています。
    0は押されていない時のボタンの絵。1は押されている時のボタンの絵になっていることを想定しています。
    アトラスを使わず、別々のテクスチャとして用意した場合は以下のように書き換えて下さい。


    using UnityEngine;
    using System.Collections;

    public class ButtonTest : MonoBehaviour {
    public Texture2D BTN_TEST;
    public Texture2D BTN_TEST_PUSH;
    bool btnAPushFlg = false;
    Ray ray;
    RaycastHit hit;

    void Start(){
    OT.Sprite("btnTest").texture = BTN_TEST;
    }

    void Update () {
    if(Input.GetMouseButtonDown(0)){
    ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if(Physics.Raycast(ray , out hit)){
    // testボタン押下.
    if(hit.transform.name == "btnTest"){
    btnAPushFlg = true;
    OT.Sprite("btnTest").texture = BTN_TEST_PUSH;
    }
    }
    }
    if(Input.GetMouseButton(0)){
    ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if(Physics.Raycast(ray , out hit)){
    // testボタンおしっぱ.
    if(hit.transform.name == "btnTest" && btnAPushFlg){
    btnAPushFlg = true;
    OT.Sprite("btnTest").texture = BTN_TEST_PUSH;
    return;
    }
    }
    btnAPushFlg = false;
    OT.Sprite("btnTest").texture = BTN_TEST;
    }
    if(Input.GetMouseButtonUp(0)){
    ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if(Physics.Raycast(ray , out hit)){
    // testボタン離す.
    if(hit.transform.name == "btnTest" && btnAPushFlg){
    btnAPushFlg = false;
    OT.Sprite("btnTest").texture = BTN_TEST;
    // ここにボタン押した時の処理を書く.
    }
    }
    }
    }
    }

    変わった場所わかりにくいですかね。
    OT.Sprite("btnTest").frameIndex ⇒ OT.Sprite("btnTest").texture
    に変わりました。
    それと、はじめのアトラスのインデックスがTexture2Dになりました。
    これ、ボタンの絵をそれぞれアサインしといてください。

    ①ダウン時
     ボタンのSpriteが押された時の処理として、フラグをたて、絵を変えます。
    ②おしっぱ時(そのボタンが押されているフラグが立っている時)
     ボタンのSpriteがおしっぱの時は絵を押されたものとして表示しておきますが、
     タップされたままボタン以外のところに指が行ってしまった場合は、フラグを落とし、絵も押されていない状態に戻します。
    ③離した時(そのボタンが押されているフラグが立っている時)
     ここで実際の押された時の処理を書きます。
     
    どうでしょう?ボタン押された時っぽい動きになりますよ!

    ということで、ボタンこれでやってます。
    他にいい案ありましたらご教授くださいませ!

    以上!今日のブログでした!

    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    Tag: Orthello  Android  Unity  Sprite  texture  アトラス  textureAtlas  ボタン 
    tb 0 : cm 0   

    【Java】ツリー構造のListViewみたいなものを作成してみた 

    はい。こんにちは。大坂です。

    微妙なタイトルの記事ですが、お付き合いください。

    皆さんはアプリを作成していてこんなもの(↓)をほしくなったりしませんかね?

    グループ1、グループ2をタップ
    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

    こんな感じの大項目をタップすると小項目が閉じるやつです!(ほしくないですか!?)

    ちょっと調べてみると、「ExpandableListView」というのがありますね!ktkr!・・・ほうほう、よくわからん!(ぇ

    ということでなんちゃってで作ってみました。
    まずはレイアウトからですね。
      <ScrollView
    android:id="@+id/foldScroll"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fadingEdge="none">
    <LinearLayout
    android:id="@+id/foldLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    </LinearLayout>
    </ScrollView>

    「ScrollView」に「LinearLayout」を入れてるだけですね。
    あとはプログラムでどうにかします。
    長いし、よくわからないプログラムかもしれませんが・・・。
    public class HogeActivity extends Activity {
    // 小項目の表示非表示フラグ
    boolean showFlg = false;

    /****** onCreateとかいろいろ省略 ******/

    // ツリー構造を作成するのを呼び出すサンプル。onCreateから呼び出していることにします。
    // (本来はデータ準備してループでやるんですかね?)
    public void hogehoge() {
    String[] group = {"グループ1","グループ2","グループ3"};
    String[] groupChild_1 = {"グループ1_こども1","グループ1_こども2",
    "グループ1_こども3","グループ1_こども4","グループ1_こども5"}
    String[] groupChild_2 = {"グループ2_こども1"}
    String[] groupChild_3 = {"グループ3_こども1","グループ3_こども2",
    "グループ3_こども3"}

    setGropuView(group[0], groupChild_1);
    setGropuView(group[1], groupChild_2);
    setGropuView(group[2], groupChild_3);
    }

    public void setGropuView(String group, String[] groupChild) {
    // 大項目のグループ作成
    TextView groupText = new TextView(this);
    groupText.setText(group + "(" + groupChild.length + ")");
    groupText.setTextSize(24); // テキストサイズ
    groupText.setTextColor(Color.WHITE); // テキスト色
    groupText.setGravity(Gravity.CENTER_VERTICAL); // レイアウト位置(縦真ん中に設定)
    groupText.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT)); // レイアウトのサイズを設定

    // 子供の表示非表示を制御するレイアウトの作成
    final LinearLayout showLayout = new LinearLayout(this);
    showLayout.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT)); // レイアウトのサイズを設定
    showLayout.setOrientation(LinearLayout.VERTICAL); // LinearLayoutで縦設定

    // 大項目をクリックしたときの設定
    groupText.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    // クリックしたとき表示されている場合
    if(showFlg) {
    // 子供の表示非表示を制御するレイアウトを非表示にする
    showLayout.setVisibility(View.GONE);
    // フラグをfalseに設定
    showFlg = false;
    } else {
    // 子供の表示非表示を制御するレイアウトを表示する
    showLayout.setVisibility(View.VISIBLE);
    // フラグをtrueに設定
    showFlg = true;
    }
    }
    });

    // グループのこどもを作成
    // String配列を順番に取り出して処理する
    for(String tmpChild : groupChild) {
    // 今回はチェックボックスも付けているのでさらに「LinearLayout」を作成
    LinearLayout childLayout = new LinearLayout(this);
    childLayout.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT)); // レイアウトのサイズを設定
    childLayout.setOrientation(LinearLayout.HORIZONTAL); // LinearLayoutで横設定

    // こどものテキストを作成
    TextView childText = new TextView(this);
    childText.setText(" " + tmpChild); // テキストに文字を設定
    childText.setTextSize(20); // 文字サイズの設定
    childText.setTextColor(Color.WHITE); // 文字色の設定
    childText.setGravity(Gravity.CENTER_VERTICAL); // レイアウト位置(縦真ん中に設定)
    // レイアウトのサイズを設定「LinearLayout」の中での比率も指定
    childText.setLayoutParams(new LinearLayout.LayoutParams(
    0, LinearLayout.LayoutParams.MATCH_PARENT, 9));
    // チェックボックスの作成
    final CheckBox childCheck = new CheckBox(this);
    // // レイアウト位置(縦真ん中、右寄せに設定)
    childCheck.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT);
    // レイアウトのサイズを設定「LinearLayout」の中での比率も指定
    childCheck.setLayoutParams(new LinearLayout.LayoutParams(
    0, LinearLayout.LayoutParams.MATCH_PARENT, 1));

    // おまけ。
    //テキストをクリックしても対応するチェックボックスにチェックが入るように設定
    childText.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    // チェックが入っているとき
    if(childCheck.isChecked()) {
    // チェックを外す
    childCheck.setChecked(false);
    // チェックが外れているとき
    } else {
    // チェックを入れる
    childCheck.setChecked(true);
    }
    }
    });

    // 横並びのLinearLayoutにテキストとチェックボックスを追加
    childLayout.addView(childText);
    childLayout.addView(childCheck);
    // 子供の表示非表示を制御するLinearLayoutに横並びのLinearLayoutを追加
    showLayout.addView(childLayout);
    }
    // レイアウトファイルに設定しているLinearLayoutに大項目のテキストを設定
    foldLayout.addView(groupText);

    // 親Viewを取得してremoveView実行(エラー対策)
    ViewGroup parent = (ViewGroup)showLayout.getParent();
    if ( parent != null ) {
    parent.removeView(showLayout);
    }
    // レイアウトファイルに設定しているLinearLayoutに
    // 子供の表示非表示を制御するLinearLayoutを追加
    foldLayout.addView(showLayout);
    }
    }

    こんな感じでやってみました。一応これで張り付けた画面のようなものができます!
    本当はバックグラウンドや間の線も指定していますが、省略しています。
    チェックボックス付でもっといいやり方ご存知の方!是非是非、教えてください!

    あとはチェックボックスの値を取っていろいろやれば完成ですね・・・。
    ではで・・・え?チェックボックスの処理はないのかって??
    えぇ!まだ作ってません!ごめんなさいorz

    来週の記事で書けるようにするので許してくださいm(_ _)m

    ではでは、また来週(´・ω・)ノシ

    Category: 開発日記(Java)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【Unity】Twitterと日本語表記について 

    水曜担当の秋山です。

    今回はUnityでのTwitter連動のやり方を書きます。

    参照させていただいたのはテラシュールウェアさんのこの記事ここの記事です。

    ざっと読んだ限り「Application.OpenURL」を利用した手順が1番シンプルでした。
    現行のUnity4無償版でも利用できているので、そのまま拝借することに。

    実際に利用したところ、なぜか日本語だけ文字化けしてしまい調べて以下の記事を発見。
    「スクリプトファイルのutf-8変換」

    「utf-8 BOMあり」で保存したら見事に表示されました!
    また、他の対応としてMonoDevelopで保存するときに「File」の「Save As」を選択し、
    Character Codingを「Western(ISO-8859-15)」でも行けるそうです。

    今日は短いですがこのぐらいで。
    もう少しで、たま転がし完成しそうです・・・


    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【その他】先日アンドロイダーの公認デベロッパーフォーラムに行ってきました。 

    はいはい、Zaboこと坂内です。

    先日開かれた、アンドロイダー公認デベロッパーフォーラムに参加させて頂きました!
    おもろかった!フォーラムとか人生初参戦でしたYO!
    色々と面白い話題があって、ためになったと思います!



    アンドロイダーがユーザ、デベロッパーのためにどのように取り組んでいるか、色々と見えてきてよかったです!
    まだまだ今後もアンドロイダーの活動に注目ですね!

    あ、種ちゃんいましたよ!ツーショット写真とってきました!
    かわいかったよ!
    https://www.facebook.com/shino.tane.miyamoto


    すこしでもうちのアプリの露出を上げる方法を日々考えています!
    今後もフォーラムや勉強会に積極的に参加していこうと思っております!

    是非是非、ご一緒の際にはよろしくお願いします!

    それと!あと少しで2本ほどリリース予定!お楽しみに!

    Category: その他日記

    tb 0 : cm 0   

    【Java】ツイッター連動について 

    こんにちは。大坂です。

    酒めもりのチラシを作って横浜にある海華月さんにおいてもらいました!
    是非、お店に行って楽しく美味しい料理・お酒を飲みながら確認してみてください!!
    チラシはこんな感じですよ~。
    sakememory.png

    では、今週のプログラムの話題に。作成したアンドロイドアプリでツイッターに連動したい場合についてです。
    方法は以下があります。(ほかにもあれば教えてください!)
    ・Twitter4jを利用する方法
    ・暗黙のIntentを利用する方法
    ・URLを使用する方法(画像が送れない?)
    今回は暗黙のIntentを利用し、ツイート文言と画像を送る方法。
       //Intent.ACTION_SENDを発行
    Intent intent = new Intent(Intent.ACTION_SEND);
    // 画像も送りたいので「image/jpeg」を指定
    intent.setType("image/jpeg");
    // ツイート文言の設定
    intent.putExtra(Intent.EXTRA_TEXT, "お酒おいしい。");
    // 画像の設定(content://でファイルを指定する)
     intent.putExtra(Intent.EXTRA_STREAM,
    Uri.parse("content://media/external/images/media/1"));
    // 呼び出し 10はリクエストID(アプリ内でわかりやすいものを指定すればよい)
    startActivityForResult(intent, 10);

    こんな感じです。が、しかしTwitter以外のアプリを選ばれるとうまくいかないこともありますね。
    FaceBookとかは「Intent.EXTRA_TEXT」がURLようになっているみたいですし。
    Twitter公式アプリのみを対象とするなら、
     intent.setClassName("com.twitter.android", "com.twitter.android.PostActivity");

    をIntentに設定すれば、直接Twitter公式アプリが起動されます。
    Twitter公式アプリがない場合は「ActivityNotFoundException」が発生するので、Catchして処理をするか事前にTwitter公式アプリがインストールをされているか確認しましょう。
    確認方法はこんな感じでしょうか。
      boolean twitterFlg = false;
    // パッケージマネージャを取得
    PackageManager pm = getPackageManager();
    // ランチャーから起動出来るアプリケーションの一覧を取得
    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    // 一覧の取得
    List list = pm.queryIntentActivities(intent, 0);
    if (list != null) {
    for (ResolveInfo info : list) {
    // アプリ名をログに出力
    Log.i("アプリ名", info.loadLabel(pm).toString());
    // パッケージ名をログに出力
    Log.i("パッケージ名", info.activityInfo.packageName);
    // パッケージ名に「"com.twitter.android"」が存在するか判定
    if(info.activityInfo.packageName.equals("com.twitter.android")) {
    twitterFlg = true;
    break;
    }
    }
    }

    ここまで書いたことをうまく利用すれば、認証とかをあまり気にせずにTwitter連動ができるのではないでしょうか。
    Twitter4Jの記事も探すと色々あるので自分やアプリに合った方法でツイッター連動してみましょう!

    ではでは、また来週(´・ω・)ノシ

    Category: 開発日記(Java)

    tb 0 : cm 0   

    【Unity】Materialについて 

    こんにちわ、水曜担当の秋山です。

    午前中は、ディスプレイが壊れて散々でした。
    中古はやっぱ危険です・・・

    さて、今日はMaterialについて基本的なこと書いておきます。
    今回はテクスチャをAssetStoreから用意しました。

    まずは、テクスチャを貼るオブジェクトを用意。
    Project画面にあるテクスチャをScene画面にあるオブジェクトにドロップ。
    テクスチャのあるフォルダ配下に、Materialsフォルダの中にMaterialが作成されます。

    20130904_02a.png

    オブジェクトの大きさを変更した場合、テクスチャが伸びてしまいます。
    伸びた場合の対処は、Materialを選択し、Inspector画面のTilingをオブジェクトのサイズにあった数値に変更します。
    今回X軸で2に伸ばしたのでTilingのX値を1から2にしました。

    20130904_04a.png


    これを利用して1つのテクスチャで複数のMaterialを作成し、
    サイズの違うオブジェクトに同一テクスチャを利用できます。

    20130904_06a.png

    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    tb 0 : cm 0   

    【Unity】Unity開発にて嵌ったこと(初心者のわな) 

    はーい こんにちわー 坂内ですー

    今日もあついあつい、あつすぎるんじゃない!?
    今日も横浜は猛暑でがんす。33度っすか?熱いっすね。

    あ、最近FF14はじめました。Masamuneサーバで遊んでいます!興味のある方はコメントよろしく!

    それと、GagSoundがアンドロイダーの公認アプリになりました!(わー ぱちぱち
    https://androider.jp/official/app/4e09a734a9aab52c/
    是非興味がありまいたら、使ってみてください!

    えっと、Unityの開発についてなんですけど、今回は自分の開発中にはまったことを
    書いてみようかなーと。初心者ネタ過ぎてヒかないで下さい m(__)m

    えっと、Unityで開発をしている時、ふと画像が汚いなぁと感じた時がありまして。
    こんな感じです。


    よく見るとすっごい汚いんです。
    でも、元の絵のファイルはこちら。


    綺麗なんですよ。Unityで表示すると汚くなる。。。
    これ2時間くらい嵌ってました。
    なんたって、Unityで空のプロジェクト作ってそっちで表示すると綺麗なんですもの。
    ファイルの指定の仕方も同じで、なんでどうして?ってことで、すっかりはまっていました。

    で!わかったんです!

    Unityで、「Edit」⇒「Project Settings」⇒「Quality」で以下の設定ができます。
    なぜかQualityの設定が「Fastest」になっていた!これ他の設定にしたら、綺麗になりました。



    なんででしょう?この設定知らなかったから、触ったはずはないのに・・・・
    どなたか理由おしりでしょうか!?

    ってことで、簡単ですが嵌ったことでした!

    Category: 開発日記(Unity)

    tb 0 : cm 0