スプラッシュ画面挿入
- styles.xml
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowBackground">@drawable/background_splash</item> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
親となるテーマのActionBarの有無は用途によって変えてください。
重要なのは android:windowBackground
属性にdrawableを指定していることです。
background_splash
は次のように設定しています。
- background_splash.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque"> <item android:drawable="@color/colorPrimaryDark"/> <item android:gravity="center"> <bitmap android:gravity="center" android:src="@mipmap/ic_launcher"/> </item> <item android:gravity="bottom" android:bottom="@dimen/large_margin"> <bitmap android:gravity="center" android:src="@mipmap/ic_launcher"/> </item> </layer-list>
layer-listで作成します。
文字は追加できないのですが、Verctor画像で文字を作れば設定できます。
その場合はstyleをv21以降と以前で分ける必要があります。
起動するActivityに作成したテーマを設定します。
- AndroidManifest.xml
... <activity android:name=".SplashActivity" android:label="SplashCold" android:theme="@style/SplashTheme"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> ...
Splash専用のActivityを追加しなくても、スプラッシュが追加できています!
github からandroidstudioにダウンロード Gradle location is incorrect
Gradle location is incorrect エラーがでたら、gradleそのものを指定する
AndroidStudio の最初のメニューから、
Check out project from version control
↓
GitHubを選ぶ
↓
URLをdrop&drag
↓
CLONE
↓
YES
↓
Gradle location を設定 注意
↓
Finish
AndroidStudioで使うとき、
File→ Open で見れないとき。
File → New→ ImportProject でインポートして使えるようになる。
Google Maps API key 取得 デバッグ用 リリース用 API key 取得
SHA-1 フィンガープリント取得
C:\Program Files\Java\jdk1.8.0_25\bin>
C:\Program Files\Java\jdk1.8.0_25\bin に移動 そこで、keytool が使える。
で
keytool -list -v -keystore "C:¥Users¥mura¥.android¥debug.keystore" -alias androiddebugkey -storepass android -keypass android"
これで、OK
API Managerに移動
- Google Developers Console に移動します。
- プロジェクトを選択します。
- 左のサイドバーで、[API·と認証] を選択します。
- 左のサイドバーで、[認証情報] を選択します。
Android API キーを取得する
上記の手順を実行して API をアクティベートした後、Google Developers Console の資格情報ページが開きます。このページではプロジェクトの API キーや他の資格情報にアクセスできます。
- プロジェクトにまだ Android アプリケーション用キーがない場合は、[新しいキーを作成] ボタン、[Android キー] の順に選択して API キーを作成します。
-
表示されるダイアログで、アプリの SHA-1 フィンガープリント、セミコロン(;)、アプリのパッケージ名の順に入力します。次に例を示します。
BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75;com.example.android.mapexample
-
次のように、Google Developers Console によって Key for Android applications というタイトルのセクションが表示され、次に 40 文字のAPI キーが表示されます。
AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0
API キーを取得したら、スタートガイドで説明されているとおり、それをアプリのマニフェストに追加します。
2 リリース用 API key 取得
Androidstudio のkeystore はjksになったので、上記とは違い、APKからフィンガープリントを取得する。
C:\Program Files\Java\jdk1.8.0_25\bin>
keytool -list -printcert -jarfile C:\Users\mura\StudioProjects\Memo201f3\app\app-release.apk
そして、デバッグ同様新たにAPIキー作成をおこなう。
新しく取得したAPIキーで、MANUFEST 修正、再度APK作成、リリース
launchMode="standard"
Activity A まにゅフェスト
launchMode="standard"
Activity BからActivityAへインテント
finish();
/* Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("sharedText", sharedText);
startActivity(intent);*/
// ⑦アクティビティを再開させる
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("sharedText", sharedText);
startActivity(intent);:
Intent.FLAG_ACTIVITY_CLEAR_TOP
実行してたらクリアして最初から という意味。
なので、intent が違う内容でも受け取れる。
oncreatekから始まるから
onNewIntent(Intent intent)が思うように動かない。
ホームボタンが押された時終了。
たったこれだけが大発見
@Override
public void onUserLeaveHint(){
//ホームボタンが押された時や、他のアプリが起動した時に呼ばれる
//戻るボタンが押された場合には呼ばれない
finish();
// Toast.makeText(getApplicationContext(), "Good bye!" , Toast.LENGTH_SHORT).show();
}
-----------------------------
暗黙インテント受け取り時、アプリが終了状態なら、
getAction()が受け取れるが、
アプリ起動中、ホームボタン押されて、ブラウザから、intent
されたとき、
getAction()が受け取れない、しかも、onresumeから始まる
よって、ホームボタンが押されたとき、一度しゅうりょうして、次回起動時にoncreateから始まり、getactionが受け取れるようになった。
fragment 下のリスナーが透けて有効になる件。
////////下のリスナー無効
////////////////////////全体にクリックリスナーして、無効にする。
LinearLayout lenear_all = (LinearLayout)view.findViewById(R.id.linear_all);
lenear_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
-------------------------------------------------
透けるのを利用して、メニューボタンなど子fragmentでもoya eventとして扱える。
kofragment 参照
notify使い分け adapter.notifyItemRemoved(position); apter.notifyItemRangeChanged
//////////////////////////////////ミソ-------------------------
removw時 セットで使う。
adapter.notifyItemRemoved(position);
adapter.notifyItemRangeChanged(position, getItemCount());
onswaipe 時
adapter.notifyItemChanged(pos);
これでアニメもつく。
view.tv_del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!CommonUtils.isClickEvent()) return;
list3Ko.remove(position);
adapter.notifyItemRemoved(position);
int h = getItemCount();
adapter.notifyItemRangeChanged(position, getItemCount());
//adapter.notifyDataSetChanged();
}
});
view.tv_undo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!CommonUtils.isClickEvent()) return;
/* int w1 = list3Ko.get(position).getItem1();
String w2 = list3Ko.get(position).getItem2();
String w3 = list3Ko.get(position).getItem3();
String w4 = list3Ko.get(position).getItem4();
String w5 = list3Ko.get(position).getItem5();
String w6 = list3Ko.get(position).getItem6();
Uri w7 = list3Ko.get(position).getItem7();
Bitmap w8 = list3Ko.get(position).getItem8();
*/
list3Ko.get(position).set10FlgUndo("0");
adapter.notifyItemChanged(position);
//adapter.notifyDataSetChanged();
}
});