diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-10-11 23:07:35 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-10-11 23:07:35 +0900 |
commit | e1195005912d3fdf85815807bef32c754e21addd (patch) | |
tree | 23e975e7a35804c1387458a3d440e4c81a8a2d4d | |
parent | e4b009a19e093f6d610c8bf3d91ed2b694a043be (diff) | |
download | SmileEssence-e1195005912d3fdf85815807bef32c754e21addd.tar.gz |
MainActivity: 現在のページの名前を ActionBar のタイトルに表示する
3 files changed, 35 insertions, 78 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java index 19e70e17..2756532c 100644 --- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java +++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java @@ -24,6 +24,7 @@ package net.lacolaco.smileessence.activity; +import android.app.ActionBar; import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -65,7 +66,7 @@ import twitter4j.TwitterStream; import java.lang.reflect.Field; -public class MainActivity extends Activity implements Application.OnCurrentAccountChangedListener { +public class MainActivity extends Activity implements Application.OnCurrentAccountChangedListener, ViewPager.OnPageChangeListener { // ------------------------------ FIELDS ------------------------------ public static final int REQUEST_GET_PICTURE_FROM_GALLERY = 11; @@ -201,7 +202,8 @@ public class MainActivity extends Activity implements Application.OnCurrentAccou setContentView(R.layout.layout_main); viewPager = (ViewPager) findViewById(R.id.viewPager); - pagerAdapter = new PageListAdapter(this, viewPager); + pagerAdapter = new PageListAdapter(this); + viewPager.addOnPageChangeListener(this); currentAccountIconImageView = (ImageView) findViewById(android.R.id.home); currentAccountIconImageView.setScaleType(ImageView.ScaleType.FIT_XY); @@ -384,6 +386,22 @@ public class MainActivity extends Activity implements Application.OnCurrentAccou Notificator.getInstance().onForeground(); } + // --------------------- Interface OnPageChangeListener --------------------- + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + } + + @Override + public void onPageSelected(int position) { + Logger.debug(String.format("Page selected: %d", position)); + updateActionBarTitle(); + } + + @Override + public void onPageScrollStateChanged(int state) { + } + // -------------------------- OTHER METHODS -------------------------- private void getImageUri(int requestCode, int resultCode, Intent data) { @@ -414,7 +432,6 @@ public class MainActivity extends Activity implements Application.OnCurrentAccou return true; } - @SuppressWarnings("ConstantConditions") @Override public void onCurrentAccountChanged(Account account) { Logger.debug(String.format("onCurrentAccountChanged: %s", account.getUser().getScreenName())); @@ -427,7 +444,7 @@ public class MainActivity extends Activity implements Application.OnCurrentAccou // update actionbar Runnable update = () -> { - getActionBar().setTitle(user.getScreenName()); + updateActionBarTitle(); String newUrl = user.getProfileImageUrl(); if (newUrl != null) { new BitmapURLTask(newUrl, currentAccountIconImageView).execute(); @@ -453,6 +470,16 @@ public class MainActivity extends Activity implements Application.OnCurrentAccou startStream(); } + private void updateActionBarTitle() { + ActionBar actionBar = getActionBar(); + Account currentAccount = Application.getInstance().getCurrentAccount(); + if (actionBar != null && currentAccount != null) { + String screenName = currentAccount.getUser().getScreenName(); + String pageTitle = pagerAdapter.getName(viewPager.getCurrentItem()); + setTitle(String.format("%s / %s", screenName, pageTitle)); + } + } + // TODO: tab order? private void initializePages() { pagerAdapter.addPage(PostFragment.class, getString(R.string.page_name_post), null, false); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.java index 45d33ec7..04a38f35 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.java @@ -26,7 +26,6 @@ package net.lacolaco.smileessence.view.adapter; import android.os.Bundle; import android.support.v13.app.FragmentPagerAdapter; -import android.support.v4.view.ViewPager; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.logging.Logger; import net.lacolaco.smileessence.view.page.PageFragment; @@ -37,7 +36,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class PageListAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener { +public class PageListAdapter extends FragmentPagerAdapter { // ------------------------------ FIELDS ------------------------------ @@ -46,9 +45,8 @@ public class PageListAdapter extends FragmentPagerAdapter implements ViewPager.O // --------------------------- FragmentPagerAdapter --------------------------- - public PageListAdapter(MainActivity _activity, ViewPager _viewPager) { + public PageListAdapter(MainActivity _activity) { super(_activity.getFragmentManager()); - _viewPager.addOnPageChangeListener(this); } @Override @@ -83,23 +81,6 @@ public class PageListAdapter extends FragmentPagerAdapter implements ViewPager.O // ------------------------ INTERFACE METHODS ------------------------ - // --------------------- Interface OnPageChangeListener --------------------- - - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - } - - @Override - public synchronized void onPageSelected(int position) { - //Synchronize pager and navigation. - Logger.debug(String.format("Page selected: %d", position)); - //actionBar.setSelectedNavigationItem(position); - } - - @Override - public void onPageScrollStateChanged(int state) { - } - // -------------------------- OTHER METHODS -------------------------- public void addPage(Class<? extends PageFragment> klass, String name, Bundle args) { @@ -119,15 +100,8 @@ public class PageListAdapter extends FragmentPagerAdapter implements ViewPager.O return pages.remove(position) != null; // TODO } - @Override - public void notifyDataSetChanged() { - ArrayList<String> itemList = new ArrayList<>(); - for (PageInfo f : pages) { - itemList.add(f.getName()); - } - //ArrayAdapter<String> adapter = new ArrayAdapter<>(context, R.layout.navigation_list_item, R.id.navigation_list_item_text, itemList); - //actionBar.setListNavigationCallbacks(adapter, this); - super.notifyDataSetChanged(); + public String getName(int pos) { + return pages.get(pos).getName(); } @Deprecated diff --git a/app/src/main/res/layout/navigation_list_item.xml b/app/src/main/res/layout/navigation_list_item.xml deleted file mode 100644 index fd9f37f8..00000000 --- a/app/src/main/res/layout/navigation_list_item.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<!-- - ~ The MIT License (MIT) - ~ - ~ Copyright (c) 2012-2014 lacolaco.net - ~ - ~ Permission is hereby granted, free of charge, to any person obtaining a copy - ~ of this software and associated documentation files (the "Software"), to deal - ~ in the Software without restriction, including without limitation the rights - ~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - ~ copies of the Software, and to permit persons to whom the Software is - ~ furnished to do so, subject to the following conditions: - ~ - ~ The above copyright notice and this permission notice shall be included in all - ~ copies or substantial portions of the Software. - ~ - ~ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - ~ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - ~ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - ~ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - ~ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - ~ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - ~ SOFTWARE. - --> - -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@android:color/transparent" - android:orientation="vertical" - android:paddingBottom="6dp" - android:paddingLeft="5dp" - android:paddingTop="6dp"> - - <TextView - android:id="@+id/navigation_list_item_text" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:gravity="left|center_vertical" - android:textAppearance="@android:style/TextAppearance.Holo.Medium.Inverse" - android:textColor="@color/white" /> - -</FrameLayout>
\ No newline at end of file |