网上找了一圈,由于基础不好,不直到paperView这个东西,还想着自己去实现……………….
网上的例子太复杂.不如我写的简单:就是实现任意两个 布局随手指移动,好比是listView 横过来一样的.或者是桌面左右移动的效果.
其实就是写一个 paperview 然后从中得到item,左右滑动效果都是有系统自己搞的.
- 引入android.support.v4.view jar包.
- 布局文件中创建一个 android.support.v4.view.ViewPager 的view ,滑动就是在这个里面中进行的.
- 从activity中找到的paperView .
- 为paperView设置adapter,重写getCount() ,destroyItem(), instantiateItem(),isItemFromObeject() :
- getCount() :: 创建列表的大小
- destroyItem() :: 从ViewPager中removeView()
- instantiateItem() ::这个就是如何显示的方法, 需要将view加到container中, 然后再返回这个View
- isViewFromObject() :: return view==object ,决定是否显示,那你要设置显示的item同 container中有的view做比较,找到了就显示
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private ViewPager viewPager;
private ArrayList<View> pageViews;
private ViewGroup main;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = getLayoutInflater();
pageViews = new ArrayList<View>();
View v = inflater.inflate(R.layout.page1, null);
Button btn = (Button) v.findViewById(R.id.button);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "点击了", 1).show();
;
}
});
pageViews.add(v);
pageViews.add(inflater.inflate(R.layout.page2, null));
main = (ViewGroup) inflater.inflate(R.layout.activity_main, null);
viewPager = (ViewPager) main.findViewById(R.id.guidePages);
viewPager.setAdapter(new GuidePageAdapter());
setContentView(main);
}
// 指引页面数据适配器
class GuidePageAdapter extends PagerAdapter {
@Override
public int getCount() {
return pageViews.size();
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
// TODO Auto-generated method stub
((ViewPager) arg0).removeView(pageViews.get(arg1));
}
@Override
public Object instantiateItem(View arg0, int arg1) {
// TODO Auto-generated method stub
((ViewPager) arg0).addView(pageViews.get(arg1));
return pageViews.get(arg1);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
}
}