[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
宣伝編を書いたので技術について
技術的に難しいことはなく、はてなブックマークの各ジャンルのRSSフィードを読み込んで表示しているだけ
はてブ・ビューはAndroid 2.2 以上サポートしているが、ActionBarやNavigation Drawerを使っている。
また、今回のアプリは初めていちからPlayストア公開までAndroid Studioで作成したものだ。
public class RssRequest extends Request<ArrayList<RssItem>> { private final Response.Listener<ArrayList<RssItem>> mListener; public RssRequest(int method, String url, Response.Listener<ArrayList<RssItem>> mListener, Response.ErrorListener errorListener) { super(method, url, errorListener); this.mListener = mListener; } @Override protected Response<ArrayList<RssItem>> parseNetworkResponse(NetworkResponse response) { InputStream is = new ByteArrayInputStream(response.data); ArrayList<RssItem> itemList = new ArrayList<RssItem>(); XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(is, null); int eventType = parser.getEventType(); RssItem currentItem = null; int itemCount = 0; while (eventType != XmlPullParser.END_DOCUMENT) { String tag; switch (eventType) { case XmlPullParser.START_TAG: tag = parser.getName(); if (tag.equals("item")) { currentItem = new RssItem(); } else if (currentItem != null) { if (tag.equals("title")) { currentItem.setTitle(parser.nextText()); } else if (tag.equals("description")) { currentItem.setText(parser.nextText()); } else if (tag.equals("link")) { currentItem.setLink(parser.nextText()); } else if (tag.equals("date")) { currentItem.setDate(parser.nextText()); } else if (tag.equals("subject")) { currentItem.setCategory(parser.nextText()); } else if (tag.equals("bookmarkcount")) { currentItem.setBookmarkCount(Integer.valueOf(parser.nextText())); } else if (tag.equals("encoded")) { currentItem.setContent(parser.nextText()); } } break; case XmlPullParser.END_TAG: tag = parser.getName(); if (tag.equals("item")) { currentItem.setItemCount(itemCount); itemList.add(currentItem); itemCount++; } break; } eventType = parser.next(); } } catch (Exception e) { Log.e("ERROR", "on parseXML = " + e.getMessage()); } return Response.success(itemList, getCacheEntry()); } @Override protected void deliverResponse(ArrayList<RssItem> response) { this.mListener.onResponse(response); } }
Android API level 11から追加されたActionBarをそれ以下のバージョンで使いたいときにActionBarActivityを使う。Android Supportのv7 appcompat libraryを読み込んで使うことができる。
Android Studioのbuild.gradleに追加する場合compile 'com.android.support:appcompat-v7:18.0.+'
public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionbar = getSupportActionBar(); actionbar.setDisplayHomeAsUpEnabled(true); actionbar.setHomeButtonEnabled(true); } ...
作成方法とサンプルは以下のページを読めばだいたい知りたいことは書かれてある。
Creating a Navigation Drawer http://developer.android.com/training/implementing-navigation/nav-drawer.html
はてブ・ビューのソースコードは公開してもいいかなと思っているけど、そもそもこれを公開するメリットが見えないからな
以上
宣伝編を書いたので技術について
技術的に難しいことはなく、はてなブックマークの各ジャンルのRSSフィードを読み込んで表示しているだけ
はてブ・ビューはAndroid 2.2 以上サポートしているが、ActionBarやNavigation Drawerを使っている。
また、今回のアプリは初めていちからPlayストア公開までAndroid Studioで作成したものだ。
public class RssRequest extends Request<ArrayList<RssItem>> { private final Response.Listener<ArrayList<RssItem>> mListener; public RssRequest(int method, String url, Response.Listener<ArrayList<RssItem>> mListener, Response.ErrorListener errorListener) { super(method, url, errorListener); this.mListener = mListener; } @Override protected Response<ArrayList<RssItem>> parseNetworkResponse(NetworkResponse response) { InputStream is = new ByteArrayInputStream(response.data); ArrayList<RssItem> itemList = new ArrayList<RssItem>(); XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(is, null); int eventType = parser.getEventType(); RssItem currentItem = null; int itemCount = 0; while (eventType != XmlPullParser.END_DOCUMENT) { String tag; switch (eventType) { case XmlPullParser.START_TAG: tag = parser.getName(); if (tag.equals("item")) { currentItem = new RssItem(); } else if (currentItem != null) { if (tag.equals("title")) { currentItem.setTitle(parser.nextText()); } else if (tag.equals("description")) { currentItem.setText(parser.nextText()); } else if (tag.equals("link")) { currentItem.setLink(parser.nextText()); } else if (tag.equals("date")) { currentItem.setDate(parser.nextText()); } else if (tag.equals("subject")) { currentItem.setCategory(parser.nextText()); } else if (tag.equals("bookmarkcount")) { currentItem.setBookmarkCount(Integer.valueOf(parser.nextText())); } else if (tag.equals("encoded")) { currentItem.setContent(parser.nextText()); } } break; case XmlPullParser.END_TAG: tag = parser.getName(); if (tag.equals("item")) { currentItem.setItemCount(itemCount); itemList.add(currentItem); itemCount++; } break; } eventType = parser.next(); } } catch (Exception e) { Log.e("ERROR", "on parseXML = " + e.getMessage()); } return Response.success(itemList, getCacheEntry()); } @Override protected void deliverResponse(ArrayList<RssItem> response) { this.mListener.onResponse(response); } }
Android API level 11から追加されたActionBarをそれ以下のバージョンで使いたいときにActionBarActivityを使う。Android Supportのv7 appcompat libraryを読み込んで使うことができる。
Android Studioのbuild.gradleに追加する場合compile 'com.android.support:appcompat-v7:18.0.+'
public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionbar = getSupportActionBar(); actionbar.setDisplayHomeAsUpEnabled(true); actionbar.setHomeButtonEnabled(true); } ...
作成方法とサンプルは以下のページを読めばだいたい知りたいことは書かれてある。
Creating a Navigation Drawer http://developer.android.com/training/implementing-navigation/nav-drawer.html
はてブ・ビューのソースコードは公開してもいいかなと思っているけど、そもそもこれを公開するメリットが見えないからな
以上