カテゴリー別アーカイブ: Android

andoridについてのTips

AdMobをAndroidアプリに追加したいけどAPIレベルが合わない

表題のままだけど、Android端末にAdMobの広告を表示したいけどAPIレベルが合わないからコンパイルできなかった。

結構調べて色々記事があったけどなぜか断片的にしか拾えなかったので備忘録的にまとめ。

みそは、
AndroidManifest.xmlとproject.propertiesに異なったAPIバージョンを記載する必要があること

まず、AndroidManifest.xmlには下記を追加。

AndroidManifest.xml

AndroidManifest.xml

 

project.propertiesに記載のバージョンに13を記載

project.properties

project.properties

実行すると×マークが表示されるんだけど、2.2系の実機で問題なく動作できました。

ちなみにAndroidのAPIレベルとOSのバージョンの関係は、ここを参照
Android API Levels

自作ViewをLayout xmlで使うには

Viewクラスなどを継承した自作ComponentをLayoutのxmlで使用するには、コンストラクタにAttributeSetを追加する必要があるみたい

/**

* XMLファイルから生成される場合に使用されるコンストラクタ

* @param context {@link Context}

* @param attr {@link AttributeSet}

*/

public ActionView(Context context, AttributeSet attr) {

super(context, attr);

this.mmmain = (MindMapMain)context;

this.setOnTouchListener(this);

gestureDetector = new GestureDetector(getContext(), this);

}

方法が分からなくてlayout xmlでは出来ないのかと思ってあきらめかけた。

Viewを継承してとか当たり前なんで出来ないとか、あんまりだなと思っていたけど、自分が方法を見つけきれていないだけだった。

 

ソフトウェアキーボードの表示、非表示

ソフトウェアキーボードの表示/非表示が自動では行われなかったので下記を実装。

EditTextにフォーカスがあたった場合に、ソフトウェアキーボードを表示して
EditTextからフォーカスがはずれた場合に、ソフトウェアキーボードを非表示にする


nodeAddText = new EditText(this);
nodeAddText.setOnFocusChangeListener(new View.OnFocusChangeListener(){
 @Override
  public void onFocusChange(View v, boolean flag){

    //フォーカスが外れた場合、ソフトウェアキーボードを非表示
   if(flag == false){
    final InputMethodManager imm = 
    (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(v.getWindowToken(),0);

   } else {

    //フォーカスを取得した場合、ソフトウェアキーボードを表示
    final InputMethodManager imm = 
    (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(v,0);
   }
  }