我正试图在我的应用程序中实现视差效果.我有一个FragmentActivity实现OnPageChangeListener接口并监听我的ViewPager滚动事件.
为了在我的XML中实现这种效果,我在LinearLayout后台拥有所有其他视图,并在onPageScrolled回调中移动它.如果我只是滑动就可以了,效果会起作用,背景位置也会改变.但是当我的手指离开屏幕时,背景会重新绘制在原始位置(即使我在新页面中).我不明白为什么会这样.这里是我的代码FragmentActivity:
public class MainActivity extends FragmentActivity implements OnPageChangeListener {
// DEFINE THE PAGEADAPTER
private ViewPager viewPager;
private com.angtrim.ecomilano.PagerAdapter pagerAdapter;
private int oldPosition = 0;
private int offSet = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// CREATE VIEWPAGER
viewPager = (ViewPager) findViewById(R.id.viewpager);
pagerAdapter = new PagerAdapter(getApplicationContext(),getSupportFragmentManager());
// SET THE ADAPTER
viewPager.setAdapter(pagerAdapter);
// SET FIRST ITEM
viewPager.setCurrentItem(0);
// SET CHANGE PAGE LISTENER
viewPager.setOnPageChangeListener(this);
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 我必须开发一个客户端/服务器游戏,它使用大量网络请求来完成其任务。
客户端和服务器都Command通过socket接收多个。为了处理这些命令,我创建了一个NetworkHandler类,该类在单独的线程上侦听新的输入,并允许我发送新命令。
这些“命令”确实是异构的,并且由不同的类使用。(例如,"client ready" command被Main服务器类使用,而"client wants a card"被类使用Game)。
因此,我创建了一个CommandDispatcher类来监听NetworkHandler(可观察模式)并将不同的命令分派给正确的接收者。(全部通过接口)
问题是每个想要注册的类都"command receiver"需要调用 来CommandDispatcher将自己设置为侦听器。
因为有多个类需要此引用,所以我正在考虑将其转换CommandDispatcher为可以在任何地方访问的单例类。
我知道单例和全局类很糟糕,并且我隐藏了依赖项,并且很难测试,但我看到的唯一替代方案是将 .NETCommandDispatcher从Main类传递到所有其他类。
你能帮我找到更好的解决方案吗?谢谢。
编辑:我想澄清一下,我的应用程序是回合制游戏,因此我没有大量并行请求。