在android上更改每个片段滑动的动作栏标题的动画

在android上更改每个片段滑动的动作栏标题的动画,android,android-fragments,animation,android-viewpager,Android,Android Fragments,Animation,Android Viewpager,我使用工具栏小部件和片段设置了一个带有滑动(ViewPager)选项卡的自定义操作栏 我想为每个选项卡设置不同的操作栏“标题”。如果我能在刷卡时设置动画,那也太好了 如果有任何建议和教程链接,我将不胜感激!提前感谢:) MainActivity.Java public class MainActivity extends FragmentActivity implements Json.Listener { @Override protected void onCreate(Bundle s

我使用工具栏小部件和片段设置了一个带有滑动(ViewPager)选项卡的自定义操作栏

我想为每个选项卡设置不同的操作栏“标题”。如果我能在刷卡时设置动画,那也太好了

如果有任何建议和教程链接,我将不胜感激!提前感谢:)

MainActivity.Java

public class MainActivity extends FragmentActivity implements Json.Listener {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar topToolBar = (Toolbar) findViewById(R.id.toolbar);
    topToolBar.setTitle("Weather");
    topToolBar.inflateMenu(R.menu.menu_home);
    topToolBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            int id = item.getItemId();

            //noinspection SimplifiableIfStatement
            if (id == R.id.add_city) {
                try {
                    AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
                            .setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES)
                            .build();
                    Intent intent =
                            new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
                                    .setFilter(typeFilter)
                                    .build(MainActivity.this);
                    startActivityForResult(intent, 1);
                } catch (GooglePlayServicesRepairableException e) {
                    // TODO: Handle the error.
                } catch (GooglePlayServicesNotAvailableException e) {
                    // TODO: Handle the error.
                }
                return true;
            }

            return false;
        }
    });


    ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
    pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));

    String city_name = (PreferenceManager.getDefaultSharedPreferences(this).getString("name", ""));;
    callAPI(city_name);

}

@Override
public void onLoaded(Response androidList) {
    new DBHandler(this).insertDetailsDB(androidList);
}

@Override
public void onError() {
    Toast.makeText(this, "Error !", Toast.LENGTH_SHORT).show();
}

private class MyPagerAdapter extends FragmentPagerAdapter {

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int pos) {
        switch (pos) {

            case 0:
                return new CityListFragment();
            case 1:
                return new WeatherDeatailsFragment();
            default:
                return new WeatherDeatailsFragment();
        }
    }

    @Override
    public int getCount() {
        return 2;
    }
}
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/back"
tools:context="in.edu.apoorv.weather.MainActivity">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:minHeight="?attr/actionBarSize"
    android:background="@android:color/transparent"
    android:layout_width="match_parent"
    android:titleTextColor="#fff"
    android:layout_height="60dp">
</android.support.v7.widget.Toolbar>


<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/viewPager"
    android:layout_marginTop="60dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />


是一个用于设置视图动画的库。也许您想将其用于动画动作栏标题。

是一个用于设置视图动画的库。也许您想将其用于动画动作栏标题。

您可以将此方法添加到FragmentPagerAdapter类中。 这是为了允许在刷卡过程中根据不同的选项卡更改表格布局中的标题。希望这会有所帮助()


您可以将此方法添加到FragmentPagerAdapter类中。 这是为了允许在刷卡过程中根据不同的选项卡更改表格布局中的标题。希望这会有所帮助()


你可以像下面这样做

1.将
文本视图
放入
工具栏
中,如下所示

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="@android:color/transparent"
android:layout_width="match_parent"
android:titleTextColor="#fff"
android:layout_height="60dp">

    <TextView
    style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
    android:id="@+id/toolbar_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />      

</android.support.v7.widget.Toolbar>
3.在
res/anim
文件夹中创建动画xml文件

slide.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >

<scale
  android:duration="500"
  android:fromXScale="1.0"
  android:fromYScale="1.0"
  android:interpolator="@android:anim/linear_interpolator"
  android:toXScale="1.0"
  android:toYScale="0.0" />
</set>
5.将
OnPageChangeListener
设置为您的
ViewPager
。在侦听器的
onPageSelected()
方法中调用动画

viewPager.setOnPageChangeListener(new OnPageChangeListener() {
    public void onPageScrollStateChanged(int state) {}
    public void onPageScrolled(int position, float positionOffset, int 
positionOffsetPixels) {}

    public void onPageSelected(int position) {

         titleTv.startAnimation(animation1);

         switch(position){
         case 0:
            titleTv.setText("Title1");//set your title here
            break;

         case 1:
            titleTv.setText("Title2");//set your title here
            break;
        }
    }
});

我希望这能奏效

您可以执行以下操作

1.将
文本视图
放入
工具栏
中,如下所示

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="@android:color/transparent"
android:layout_width="match_parent"
android:titleTextColor="#fff"
android:layout_height="60dp">

    <TextView
    style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
    android:id="@+id/toolbar_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />      

</android.support.v7.widget.Toolbar>
3.在
res/anim
文件夹中创建动画xml文件

slide.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >

<scale
  android:duration="500"
  android:fromXScale="1.0"
  android:fromYScale="1.0"
  android:interpolator="@android:anim/linear_interpolator"
  android:toXScale="1.0"
  android:toYScale="0.0" />
</set>
5.将
OnPageChangeListener
设置为您的
ViewPager
。在侦听器的
onPageSelected()
方法中调用动画

viewPager.setOnPageChangeListener(new OnPageChangeListener() {
    public void onPageScrollStateChanged(int state) {}
    public void onPageScrolled(int position, float positionOffset, int 
positionOffsetPixels) {}

    public void onPageSelected(int position) {

         titleTv.startAnimation(animation1);

         switch(position){
         case 0:
            titleTv.setText("Title1");//set your title here
            break;

         case 1:
            titleTv.setText("Title2");//set your title here
            break;
        }
    }
});

我希望这能奏效

什么样的动画?你能说得具体点吗?滑入滑出。。或者淡出动画就可以了。你可以使用默认的android动画。查看开发者网站上的android动画文档。:)谢谢你的帮助。你能帮我在切换片段时更改动作栏的标题吗?什么样的动画?你能说得具体点吗?滑入滑出。。或者淡出动画就可以了。你可以使用默认的android动画。查看开发者网站上的android动画文档。:)谢谢你的帮助。你能帮我在切换片段时更改动作栏的标题吗?非常感谢。非常感谢你的帮助。它很好用@SripadRajHi@ApoorvAgarwal,请投票并接受答案,如果它对你有帮助:)非常感谢。非常感谢你的帮助。它很好用@SripadRajHi@ApoorvAgarwal,如果答案对你有帮助,请投票并接受:)