Android初学者必見!Android開発者が入れておくべきアプリたち
Androidアプリを開発していく中で、わざわざPCから確認するのがめんどくさい、モバイル端末から見れたら、ということが少なからずあるかと思います。特に通勤の電車の中ではPCを広げることもできない、、 今回はそんな不便を解消してくれる便利なアプリを紹介します。バリバリ開発されている方々にとっては馴染みのものかと思います。Android開発を始めたばかりという方は、いずれ必要になりますので、是非使ってみてください。
GitHubを眺めてみると分かるのですが、本当にたくさんのオープンソースのライブラリプロジェクトがあります。いちいちcloneしてbuildするのはめんどくさいです。そして何より、すぐに動かしてみたいところですよね。とりわけ、UIに関するものであれば特にそう感じられるかと思います。
そこでこのアプリ。様々なライブラリを集めて、デモをすぐに動かし確認することができます。
Libraries for developers
https://play.google.com/store/apps/details?id=com.desarrollodroide.repos&hl=ja
もう、むちゃくちゃ便利です。百聞は一見に如かず、是非お試しあれ。
Android Libraries
https://play.google.com/store/apps/details?id=com.rise.livdev&hl=ja
このアプリもLibraries for developersと同様に実際に動かして見てみることができます。
DevAppsDirect - Demo Market
https://play.google.com/store/apps/details?id=com.inappsquared.devappsdirect&hl=ja
こちらは上の2つと同様です。ただ、いちいちダウンロードしないといけないですし、ほとんどのライブラリは重複しているので、格段理由がない限りはいらないかと思います。一応、紹介までに。
Detective Droid
https://play.google.com/store/apps/details?id=com.michaelcarrano.detectivedroid&hl=ja
Detective Droid<はあなたの端末内に入っているアプリがどのライブラリを使用しているかを検知して示してくれます。これはじめて使ったときは衝撃的でした。Uberは、Airbnbは、Pinterestはこんなライブラリを使っているのか、ということが一目瞭然に分かります。ただ、示してくれるライブラリは全てではないみたいです。しかし、色々なアプリを見ていく中で共通項を見出し、そのライブラリを学んでみてはいかがでしょうか。
Android Arsenal
https://play.google.com/store/apps/details?id=com.android_arsenal.androidarsenal&hl=ja
最新のライブラリやツールを見ることができます。web版はこちらです。
The Android Arsenal - A categorized directory of free libraries and tools for Android
ホットなライブラリをみることができ、情報の最先端を走ることができるでしょう。こちらのアプリはデモを動かしたりということはできません。
AIDE- IDE for Android Java C++
https://play.google.com/store/apps/details?id=com.aide.ui&hl=ja
なんと!スマホでアプリのビルドができてしまうのです。hello world!できます。衝撃!!これがあればどこでも開発できる!優れものです。まあ、制限もありますが。ちょっとコード見たいときなんかにはいいのではないでしょうか。premium版もあります。premium版を購入するとプロジェクトを保存したり、Gitにpush/commitしたりとできることが増えます。といいますか、ちゃんと使いたいと思ったらpremiumを購入することをお勧めします。値段もそれ程高くないですし。
以上になります。いいやつを見つけたら随時追加していきます。
次回はその他のツール類のまとめ記事でも書きます。あと、技術的なことも。
Android StudioでFabricのTwitter Kit使ってみた
表題の通り、FabricのTwitter Kitを使ってログイン処理、タイムライン取得を実装してみました。 GitHubにあげましたので、よかったら使ってください。(ここです)
*既にFabricの登録を済ませてpluginを導入している前提で話を進めます。
Twitter Kit for Androidは要確認です。見てください。(後からでも...)
まず、Android Studioにて、下記のようにFile→New Projectから新規プロジェクトを作成します。
今回は下記のように設定しました。自由に変えてください。
Blank Activityを選択し、nextボタンをクリック。そして、最後にfinishボタンをクリックしてください。
ここまでで、hello,world!を表示するアプリができました。
いよいよ、こっからが本題です。 次に、Fabricのボタンを押して、Twitter Kitをインストールします。
あとは勝手にインストールしてくれるので、そのまま進めちゃいましょう。 終わったら、backボタンではじめの画面に戻ります。 すると、InstallからPending..に代わっていることが分かります。
この時点で、ソースコードがどのように変化したか確認してみてください。(ここをチェック)
では、ログインボタンを実装していきます。
MainActivity.java
public class MainActivity extends ActionBarActivity { // Note: Your consumer key and secret should be obfuscated in your source code before shipping. private static final String TWITTER_KEY = "your_twitter_key"; private static final String TWITTER_SECRET = "your_twitter_secret"; private TwitterLoginButton loginButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); Fabric.with(this, new Twitter(authConfig)); setContentView(R.layout.activity_main); setUpViews(); } private void setUpViews() { loginButton = (TwitterLoginButton) findViewById(R.id.login_button); loginButton.setCallback(new Callback<TwitterSession>() { @Override public void success(Result<TwitterSession> result) { startTweetList(); } @Override public void failure(TwitterException exception) { // Do something on failure } }); } .....
activity_main.xml
<com.twitter.sdk.android.core.identity.TwitterLoginButton xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/login_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"/>
twitterボタンをクリックし、認証処理後の画面遷移処理、Intentでオブジェクトを渡しています。
private void startTweetList() { final Intent intent = new Intent(MainActivity.this, TweetListActivity.class); startActivity(intent); }
最終的にMainActivityは以下のようになります。
MainActivity.java
public class MainActivity extends ActionBarActivity { // Note: Your consumer key and secret should be obfuscated in your source code before shipping. private static final String TWITTER_KEY = "your_twitter_key"; private static final String TWITTER_SECRET = "your_twitter_secret"; private TwitterLoginButton loginButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET); Fabric.with(this, new Twitter(authConfig)); setContentView(R.layout.activity_main); setUpViews(); } private void setUpViews() { loginButton = (TwitterLoginButton) findViewById(R.id.login_button); loginButton.setCallback(new Callback<TwitterSession>() { @Override public void success(Result<TwitterSession> result) { startTweetList(); } @Override public void failure(TwitterException exception) { // Do something on failure } }); } private void startTweetList() { final Intent intent = new Intent(MainActivity.this, TweetListActivity.class); startActivity(intent); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Pass the activity result to the login button. loginButton.onActivityResult(requestCode, resultCode, data); } }
ログイン後にタイムラインからtweetを取得する、TweetListActivity,tweet_list.xmlは以下の通りです。 今回は、最新のtweetから20件取得するようにしました。
TweetListActivity.java
public class TweetListActivity extends ListActivity { final TweetViewFetchAdapter adapter = new TweetViewFetchAdapter<CompactTweetView>( TweetListActivity.this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tweet_list); setListAdapter(adapter); TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient(); // statusAPI用のserviceクラス StatusesService statusesService = twitterApiClient.getStatusesService(); statusesService.homeTimeline(20, null, null, false, false, false, false, new Callback<List<Tweet>>() { @Override public void success(Result<List<Tweet>> listResult) { adapter.setTweets(listResult.data); } @Override public void failure(TwitterException e) { } }); } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@id/android:empty" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal|center_vertical" android:text="@string/empty"/> <ListView android:id="@id/android:list" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:drawSelectorOnTop="false"/> </LinearLayout>
app/res/values/strings.xmlにemptyを追加。
strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">FabricSample</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="hello_blank_fragment">Hello blank fragment</string> <string name="empty">oops, this is empty.</string> </resources>
AndroidManifest.xmlへActivityの追加も忘れずに。
では、起動してみましょう。
Fabricで設定したproject名、今回作成したアプリのpackage名ですね。 ログイン処理を行いましょう。 すると、、、
最新のtweetが取得できていますね。
念のため、Android エミュレータからだけでなく、スマホ(PC)からも確認して整合性をみてみましょう。
ソースはここに置いてます。FabricSample
Android Studioでフォーマットを整形する
Eclipseでは、"Ctrl+Shift+F"で整形できていましたが、Android Studioではどうやってやるのか。
Android Studioでは、"Ctrl+Shift+L"で下のようなダイアログが出ます。
矢印1では対象のファイルのみフォーマット整形を行います。
矢印2が指す、"All Files in directry"を選択すると、全てのファイルの整形を行ってくれます。
もしくは、対象のファイル上(この場合、MainActivity)で右クリックをすると、以下のようにダイアログが出ます。