在 Listview 的第一行添加 ViewFlipper
Adding ViewFlipper on first row of a Listview
我想像这样在 Listview
的第一行设置 ViewFlipper
单独我可以像这样在列表视图顶部设置视图翻转器:
mListView = (ListView) findViewById( R.id.mainListView );
viewFlipper =(ViewFlipper)findViewById(R.id.viewFlipper1);
setViewFlipperView();
CustomGestureDetector customGestureDetector = new CustomGestureDetector();
mGestureDetector = new GestureDetector(this, customGestureDetector);
String[] abc = new String[] { "A", "B", "C", "D",
"E", "F", "G", "H","I","J","K","L","M","N","O","P","Q","R","S"
,"T","U","V","W","X","Y","Z"};
ArrayList<String> abcList = new ArrayList<String>();
abcList.addAll( Arrays.asList(abc) );
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, abcList);
mListView.setAdapter( listAdapter );
private View setViewFlipperView(){
int[] resources = {
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher
};
for (int i = 0; i < resources.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setImageResource(resources[i]);
viewFlipper.addView(imageView,i);
}
return viewFlipper;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
mGestureDetector.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mGestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
class CustomGestureDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// Swipe left (next)
if (e1.getX() > e2.getX()) {
viewFlipper.setInAnimation(context, R.anim.left_in);
viewFlipper.setOutAnimation(context, R.anim.left_out);
viewFlipper.showNext();
}
// Swipe right (previous)
if (e1.getX() < e2.getX()) {
viewFlipper.setInAnimation(context, R.anim.right_in);
viewFlipper.setOutAnimation(context, R.anim.right_out);
viewFlipper.showPrevious();
}
return super.onFling(e1, e2, velocityX, velocityY);
}
}
和xml看起来像:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ViewFlipper
android:id="@+id/viewFlipper1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ViewFlipper>
<ListView android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainListView">
</ListView>
但是在滚动时 listview
view flipper 保持在顶部,现在我的问题是,是否可以在 listview
的顶行设置 ViewFlipper
以便它也滚动当 listview
滚动时。我想我很清楚我的问题。请帮助。
问题已解决 我已经解决了我的问题,通过将 viewflipper
视图添加为 Listview mListView.addHeaderView(flipperView);
的 HeaderView
,现在 viewFlipper 视图也随着 listview 项目滚动我在代码中所做的更改:
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
convertViewHeader = inflater.inflate(R.layout.myflipperiew , null);
ViewFlipper flipper=(ViewFlipper)convertViewHeader.findViewById(R.id.myflipper);
mListView = (ListView) findViewById( R.id.mainListView );
mListView.addHeaderView(flipper);
只需执行此操作 .. 将视图翻转器添加为列表视图的 header 如果您在列表视图中只需要一个视图翻转器,它会很好地工作。如果您需要更多,那么您应该在适配器 getView() 中执行此操作。
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
convertViewHeader = inflater.inflate(R.layout.YourFlipperview , null);
ViewFlipper flipper=(ViewFlipper)convertViewHeader.findViewById(R.id.flipperId);
listView.addHeaderView(convertViewHeader, null, false);
想用就用flipper吧。让我知道是否有任何困惑
我想像这样在 Listview
的第一行设置 ViewFlipper
单独我可以像这样在列表视图顶部设置视图翻转器:
mListView = (ListView) findViewById( R.id.mainListView );
viewFlipper =(ViewFlipper)findViewById(R.id.viewFlipper1);
setViewFlipperView();
CustomGestureDetector customGestureDetector = new CustomGestureDetector();
mGestureDetector = new GestureDetector(this, customGestureDetector);
String[] abc = new String[] { "A", "B", "C", "D",
"E", "F", "G", "H","I","J","K","L","M","N","O","P","Q","R","S"
,"T","U","V","W","X","Y","Z"};
ArrayList<String> abcList = new ArrayList<String>();
abcList.addAll( Arrays.asList(abc) );
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, abcList);
mListView.setAdapter( listAdapter );
private View setViewFlipperView(){
int[] resources = {
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher
};
for (int i = 0; i < resources.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setImageResource(resources[i]);
viewFlipper.addView(imageView,i);
}
return viewFlipper;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
mGestureDetector.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mGestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
class CustomGestureDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// Swipe left (next)
if (e1.getX() > e2.getX()) {
viewFlipper.setInAnimation(context, R.anim.left_in);
viewFlipper.setOutAnimation(context, R.anim.left_out);
viewFlipper.showNext();
}
// Swipe right (previous)
if (e1.getX() < e2.getX()) {
viewFlipper.setInAnimation(context, R.anim.right_in);
viewFlipper.setOutAnimation(context, R.anim.right_out);
viewFlipper.showPrevious();
}
return super.onFling(e1, e2, velocityX, velocityY);
}
}
和xml看起来像:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ViewFlipper
android:id="@+id/viewFlipper1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ViewFlipper>
<ListView android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainListView">
</ListView>
但是在滚动时 listview
view flipper 保持在顶部,现在我的问题是,是否可以在 listview
的顶行设置 ViewFlipper
以便它也滚动当 listview
滚动时。我想我很清楚我的问题。请帮助。
问题已解决 我已经解决了我的问题,通过将 viewflipper
视图添加为 Listview mListView.addHeaderView(flipperView);
的 HeaderView
,现在 viewFlipper 视图也随着 listview 项目滚动我在代码中所做的更改:
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
convertViewHeader = inflater.inflate(R.layout.myflipperiew , null);
ViewFlipper flipper=(ViewFlipper)convertViewHeader.findViewById(R.id.myflipper);
mListView = (ListView) findViewById( R.id.mainListView );
mListView.addHeaderView(flipper);
只需执行此操作 .. 将视图翻转器添加为列表视图的 header 如果您在列表视图中只需要一个视图翻转器,它会很好地工作。如果您需要更多,那么您应该在适配器 getView() 中执行此操作。
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
convertViewHeader = inflater.inflate(R.layout.YourFlipperview , null);
ViewFlipper flipper=(ViewFlipper)convertViewHeader.findViewById(R.id.flipperId);
listView.addHeaderView(convertViewHeader, null, false);
想用就用flipper吧。让我知道是否有任何困惑