Tôi đang cố gắng đạt được hiệu ứng thị sai trong ứng dụng của mình. Tôi có một số FragmentActivity
thực hiện giao diện OnPageChangeListener
và nghe các sự kiện di chuyển ViewPager
của tôi.Hiệu ứng thị sai của Android và Xem Máy nhắn tin
Để đạt được hiệu ứng này trong XML của tôi, tôi có LinearLayout
phía sau tất cả các chế độ xem khác với nền của tôi và tôi di chuyển nó trong cuộc gọi lại onPageScrolled
. Nếu tôi chỉ cần vuốt, tất cả đều ổn, hiệu ứng hoạt động và thay đổi vị trí nền. Nhưng khi ngón tay của tôi rời khỏi màn hình, nền được vẽ lại ở vị trí ban đầu của anh ấy (ngay cả khi tôi đang ở một trang mới). Tôi không thể hiểu tại sao điều này xảy ra. Đây là mã số của tôi 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 void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// RIGHT SWIPE
if((oldPosition < arg2))
{
offSet = (int)((arg2 - oldPosition)*0.5);
oldPosition = arg2;
}
// LEFT SWIPE
else if((oldPosition > arg2))
{
offSet = (int) (-(oldPosition - arg2)*0.5);
oldPosition = arg2;
}
findViewById(R.id.backi).offsetLeftAndRight(offSet);
}
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
}
}
Cảm ơn bạn.
có thể sử dụng cho nền và hiệu ứng thị sai là phụ thuộc vào chuyển động của màn hình – Prasad