[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
はてブ・ビューのソースコードは公開してもいいかなと思っているけど、そもそもこれを公開するメリットが見えないからな
以上