2012年2月19日日曜日

レイアウトの背景の設定・グラデーション・コーナー・背景画像


        <LinearLayout
            android:id="@+id/linearLayout4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" 
            android:background="@drawable/buttonstyle4">
        </LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="false" android:state_pressed="false"><layer-list>
            <item>
                <shape
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    android:shape="rectangle">
                    <gradient
                        android:angle="270"
                        android:endColor="#ff0000"
                        android:startColor="#dcdcdc"
                        android:type="linear" />
                    <corners
                        android:radius="4dp" />
                    <stroke
                        android:width="1dp"
                        android:color="#0000ff" />
                    <padding
                        android:bottom="5dp"
                        android:top="5dp" />
                </shape>
                </item>
                <item >
          <bitmap android:src="@drawable/ic_launcher"
           android:gravity="center" />
       </item>
        </layer-list>
    </item>

</selector>

2012年2月18日土曜日

getTextSizeとsetTextSizeのデフォルト単位が違う

 getTextSize で取得した値を、setTextSizeで設定しても大きさが違った。

getTextSizeはピクセル単位、
setTextSizeはSP単位

float size = textView.getTextSize();
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);

TypedValue.COMPLEX_UNIT_PX ・・・ピクセル単位
TypedValue.COMPLEX_UNIT_SP ・・・SP単位
TypedValue.COMPLEX_UNIT_DIP ・・・DIP単位

2012年2月17日金曜日

xmlファイルをレイアウトエディタで開く

パッケージエクスプローラからxmlファイルを選択して、
右クリックして、 アプリケーションから開くを選択する
アンドロイドレイアウトエディターを指定して開く

スクロールビューを上に戻す

final ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView1);
   scrollView.post(new Runnable() {
          public void run() {
           scrollView.fullScroll(ScrollView.FOCUS_UP);
          }
      });

キーイベントを送る

KEYCODE_BACKは問題なく動いたが
public void btnClick(View v) {
 KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK );
 dispatchKeyEvent(event);
}

KEYCODE_DPAD_RIGHTとかは動かないので下記のように修正する。
 public void btnClick(View v) {
  new KeyEventSender().execute();
 }
 public class KeyEventSender extends AsyncTask<Object, Object, Object> {
  @Override
  protected Object doInBackground(Object... arg0) {
   // TODO 自動生成されたメソッド・スタブ
   Instrumentation ist = new Instrumentation();
         ist.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_RIGHT);
   return null;
  }

 }


2012年2月14日火曜日

アプリの登録

無料アプリを登録する場合、
Google checkout の設定は必要無い。




省略可 と記入されている所以外すべて記入する。



Description:説明
Recent Changes:最近の変化
Promo Text:宣伝文(プロモーション画像がアップロードしている場合のみ必須入力)

APKファイルタブに移って、APKファイルを有効にする。

約一時間後にマーケットで確認できました。

Androidマーケットに登録

1.デベロッパーアカウントの取得

https://market.android.com/へアクセスする。


サイト下部の[デベロッパー]のリンクをクリックする。

アンドロイドデベロッパーズ(http://developer.android.com/intl/ja/index.html)
のページへ移動して、公開の[詳細>>]をクリックする。


Google アカウントにログインする。
(すでにログインしている場合は省略)
Google アカウントを取得していない場合は、事前に取得して下さい。

掲載情報の登録
デベロッパー名 と 電話番号の登録は必須
「電話番号」は市外局番の先頭の「0」を取り、日本の国番号を示す「81」を付けて記載する。
 携帯電話の場合は通常に入力して問題ありません。
(例:03-xxxx-xxxxの場合、「+81-3-xxxx-xxxx」の形式で入力すること。一般ユーザーには公開されません。)

契約書を読む
チェックを入れて、[同意して次へ>>]をクリックする。

登録料を支払う

クレジットカード情報を記入




アンドロイドマーケットへ戻る


2012年2月7日火曜日

難読化されているか確認する

作成されたファイルで確認する場合
デバッグビルドの場合の通常のビルドの時のファイルサイズと
難読化後のファイルサイズを確認して、小さくなっているか確認する。
ルートディレクトリににproguardフォルダが出来ているか確認して、
proguardフォルダの中に
dump.txt
mapping.txt
seeds.txt
usage.txt
の四つのファイルが作成されているか確認する。


中身を見て確認する場合
1.必要なファイルをダウンロードしてくる。
apktool-install-windows-r04-brut1.tar.bz2
apktool1.4.3.tar.bz2
ダウンロードはこちらから

2.ダウンロードしたファイルを解凍する。
aapt.exe
apktool.bat
apktool.jar
解凍後パスの通っているディレクトリにコピーする

3.デコンパイルの実行
プロジェクト名:AnProject
apkファイルの場所:E:\workspace\AnProject\bin
コマンドプロンプトでコマンドを実行

C:\Users\yamto>cd /d e:

E:\>cd workspace\AnProject\bin

E:\workspace\AnProject\bin>apktool d AnProject.apk
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Loading resource table from file: C:\Users\yamto\apktool\framework\1.apk
I: Loaded.
I: Decoding file-resources...
I: Decoding values*/* XMLs...
I: Done.
I: Copying assets and libs...

E:\workspace\AnProject\bin>
----------------------------------------
E:\workspace\AnProject\bin に
AnProject フォルダが作成されている。

4.smaliディレクトリの比較
smaliディレクトリを見ることでProGuardを適用しない場合と適用した場合を確認することができる。

2012年2月6日月曜日

Eclipseで証明書の作成、著名、難読化

準備編
Windowsで開発(他の環境は文字コードに注意)
Eclipse Indigo でAndroidプロジェクトを作成してる。
Android SDK は android-sdk_r16-windows.zip を使用

難読化の為に、プロジェクトのルートフォルダのproject.properties に
proguard.config=proguard.cfg
と追記する。

SDKのツールに入っているProGuardに難があるようなので修正する。
\Android\android-sdk\tools\proguard\bin\proguard.bat の一部を書き換える。
修正前
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*
修正後
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

パッケージエクスプローラからプロジェクトを選択して右クリックで、
Android ツール から export signed application package... を選択する。

後は指示に従って進めていく。