片段事务后启动 ObjectAnimator
Start ObjectAnimator after fragment transaction
我有这种方法可以从左向右滚动我的文本视图:
public void scrollText() {
float startX = 0 - scrollTxt.getWidth();
float endX = scrollTxt.getWidth();
ObjectAnimator anim = ObjectAnimator.ofFloat(scrollTxt, View.X, startX, endX);
anim.setRepeatCount(ValueAnimator.INFINITE);
anim.setRepeatMode(ValueAnimator.RESTART);
anim.setDuration(9000);
anim.start();
}
此方法和文本视图在片段中。我使用以下代码将此片段添加到我的 activity 中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawer = (DrawerLayout) findViewById(R.id.activity_main_drawer);
MainFragment mainFragment = new MainFragment();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.activity_main_frame, mainFragment);
ft.commit();
NavigationView navigationView = (NavigationView) findViewById(R.id.activity_main_nav);
navigationView.setNavigationItemSelectedListener(new MainNavigationListener(drawer));
}
我想在fragmnet 添加时开始动画。
我将 scrollText() 方法放在 fragmnet 的 onResume 中,但它没有用。
发生这种情况是因为 scrollTxt.getWidth()
在 onResume()
中为零,因为您的片段视图层次结构尚未测量。作为解决方案,您可以通过调用 scrollTxt.post()
.
将动画开始推迟到下一个布局通道
试试这个:
@Override
public void onResume() {
super.onResume();
scrollTxt.post(new Runnable() {
@Override public void run() {
scrollText();
}
});
}
scrollTxt.getWidth() returns 0,onResume()
中还没有测到
试试:
scrollTxt.post(new Runnable() {
@Override
public void run() {
scrollText();
}
});
在 mainFragment 的 onViewCreated 中
我有这种方法可以从左向右滚动我的文本视图:
public void scrollText() {
float startX = 0 - scrollTxt.getWidth();
float endX = scrollTxt.getWidth();
ObjectAnimator anim = ObjectAnimator.ofFloat(scrollTxt, View.X, startX, endX);
anim.setRepeatCount(ValueAnimator.INFINITE);
anim.setRepeatMode(ValueAnimator.RESTART);
anim.setDuration(9000);
anim.start();
}
此方法和文本视图在片段中。我使用以下代码将此片段添加到我的 activity 中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawer = (DrawerLayout) findViewById(R.id.activity_main_drawer);
MainFragment mainFragment = new MainFragment();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.activity_main_frame, mainFragment);
ft.commit();
NavigationView navigationView = (NavigationView) findViewById(R.id.activity_main_nav);
navigationView.setNavigationItemSelectedListener(new MainNavigationListener(drawer));
}
我想在fragmnet 添加时开始动画。 我将 scrollText() 方法放在 fragmnet 的 onResume 中,但它没有用。
发生这种情况是因为 scrollTxt.getWidth()
在 onResume()
中为零,因为您的片段视图层次结构尚未测量。作为解决方案,您可以通过调用 scrollTxt.post()
.
试试这个:
@Override
public void onResume() {
super.onResume();
scrollTxt.post(new Runnable() {
@Override public void run() {
scrollText();
}
});
}
scrollTxt.getWidth() returns 0,onResume()
中还没有测到试试:
scrollTxt.post(new Runnable() {
@Override
public void run() {
scrollText();
}
});
在 mainFragment 的 onViewCreated 中