zoukankan      html  css  js  c++  java
  • Android 中利用ViewFlipper 滑动屏幕切换页面,ListView展示数据

    首先新建一个Android项目,命名为ViewFlipperTest

    如图:项目机构,本项目主要操作图中红色箭头标注的文件

    1.HgroupAdapter.java文件代码↓主要实现listview数据适配器的定义

     1 package com.hll.ViewFlipperTest;
     2 
     3 import java.util.List;
     4 
     5 import android.content.Context;
     6 import android.view.LayoutInflater;
     7 import android.view.View;
     8 import android.view.ViewGroup;
     9 import android.widget.BaseAdapter;
    10 import android.widget.TextView;
    11 
    12 public class HgroupAdapter extends BaseAdapter {
    13     private LayoutInflater mInflater;
    14     int state;
    15     Context mContext;
    16     String mState;
    17     List<String> mList;
    18     int sel = 0;
    19 
    20     public HgroupAdapter(Context context, List<String> list, int menuState) {
    21         this.mList = list;
    22         this.mContext = context;
    23         this.state = menuState;
    24         mInflater = LayoutInflater.from(context);
    25     }
    26 
    27     public int getCount() {
    28         // if(mList == null){
    29         // return 0;
    30         // }
    31         // return mList.size();
    32         return 10;
    33     }
    34 
    35     public Object getItem(int position) {
    36         return mList.get(position);
    37     }
    38 
    39     public long getItemId(int position) {
    40         return position;
    41     }
    42 
    43     public View getView(int position, View convertView, ViewGroup parent) {
    44         final ViewHolder holder;
    45         if (convertView == null) {
    46             convertView = mInflater.inflate(R.layout.grouplist, null);
    47             holder = new ViewHolder();
    48             convertView.setTag(holder);
    49         } else {
    50             holder = (ViewHolder) convertView.getTag();
    51         }
    52         return convertView;
    53     }
    54 
    55     static class ViewHolder {
    56         TextView group_name;
    57         TextView time;
    58         TextView info;
    59     }
    60 }

    2.ViewFlipperTest.java 程序启动的主文件↓

    package com.hll.ViewFlipperTest;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.GestureDetector;
    import android.view.GestureDetector.OnDoubleTapListener;
    import android.view.GestureDetector.OnGestureListener;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.view.animation.AccelerateInterpolator;
    import android.view.animation.Animation;
    import android.view.animation.TranslateAnimation;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.ViewFlipper;
    
    @SuppressLint("NewApi")
    public class ViewFlipperTest extends Activity implements OnTouchListener,
            OnGestureListener, OnDoubleTapListener {
        private ViewFlipper mFlipper; // 翻转视图
        GestureDetector mGestureDetector; // 手势识别
        private int mCurrentLayoutState; // 当前布局状态
        private static final int FLING_MIN_DISTANCE = 2;
        private static final int FLING_MIN_VELOCITY = 200;
    
        TextView counttv;
        Button buttonNext1 = null;
        Button buttonNext2 = null;
    
        ListView lv1 = null;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            findView();
            setListener();
        }
    
        /*
         * 查找控件
         */
        @SuppressWarnings("deprecation")
        public void findView() {
            mFlipper = (ViewFlipper) findViewById(R.id.details);
            mFlipper.setLongClickable(true);
            mGestureDetector = new GestureDetector(this);
            mCurrentLayoutState = 0;
    
            counttv = (TextView) findViewById(R.id.counttv);
            buttonNext1 = (Button) findViewById(R.id.Button_next1);
            buttonNext2 = (Button) findViewById(R.id.Button_next2);
            lv1 = (ListView) findViewById(R.id.list1);
    
            lv1.setAdapter(new HgroupAdapter(this, null, 0));
        }
    
        public void setListener() {
    
            mFlipper.setOnTouchListener(this);
            lv1.setOnTouchListener(this);
            counttv.setText("9");
            buttonNext1.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    mFlipper.showNext();
                    counttv.setText("7");
                }
            });
            buttonNext2.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    mFlipper.showNext();
                    counttv.setText("8");
                }
    
            });
        }
    
    
        //
        protected Animation inFromRightAnimation() {
            Animation inFromRight = new TranslateAnimation(
                    Animation.RELATIVE_TO_PARENT, +1f,
                    Animation.RELATIVE_TO_PARENT, 0.0f,
                    Animation.RELATIVE_TO_PARENT, 0.0f,
                    Animation.RELATIVE_TO_PARENT, 0.0f);
            inFromRight.setDuration(300);
            inFromRight.setInterpolator(new AccelerateInterpolator());
            return inFromRight;
        }
    
        protected Animation outToLeftAnimation() {
            Animation outtoLeft = new TranslateAnimation(
                    Animation.RELATIVE_TO_PARENT, 0.0f,
                    Animation.RELATIVE_TO_PARENT, -1f,
                    Animation.RELATIVE_TO_PARENT, 0.0f,
                    Animation.RELATIVE_TO_PARENT, 0.0f);
            outtoLeft.setDuration(300);
            outtoLeft.setInterpolator(new AccelerateInterpolator());
            return outtoLeft;
        }
    
        protected Animation inFromLeftAnimation() {
            Animation inFromLeft = new TranslateAnimation(
                    Animation.RELATIVE_TO_PARENT, -1.0f,
                    Animation.RELATIVE_TO_PARENT, 0.0f,
                    Animation.RELATIVE_TO_PARENT, 0.0f,
                    Animation.RELATIVE_TO_PARENT, 0.0f);
            inFromLeft.setDuration(300);
            inFromLeft.setInterpolator(new AccelerateInterpolator());
            return inFromLeft;
        }
    
        protected Animation outToRightAnimation() {
            Animation outtoRight = new TranslateAnimation(
                    Animation.RELATIVE_TO_PARENT, 0.0f,
                    Animation.RELATIVE_TO_PARENT, +1.0f,
                    Animation.RELATIVE_TO_PARENT, 0.0f,
                    Animation.RELATIVE_TO_PARENT, 0.0f);
            outtoRight.setDuration(300);
            outtoRight.setInterpolator(new AccelerateInterpolator());
            return outtoRight;
        }
    
        public boolean onDown(MotionEvent e) {
            // TODO Auto-generated method stub
            return false;
        }
    
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) {
            if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE
                    && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
    
                mFlipper.setInAnimation(inFromRightAnimation());
                mFlipper.setOutAnimation(outToLeftAnimation());
                mFlipper.showNext();
            } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE
                    && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
    
                mFlipper.setInAnimation(inFromLeftAnimation());
                mFlipper.setOutAnimation(outToRightAnimation());
                mFlipper.showPrevious();
            }
            return false;
        }
    
        public void onLongPress(MotionEvent e) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "onLongPress", Toast.LENGTH_LONG)
            .show();
        }
    
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
                float distanceY) {
            Toast.makeText(getApplicationContext(), "onScroll", Toast.LENGTH_LONG)
            .show();
            return false;
        }
    
        public void onShowPress(MotionEvent e) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "onShowPress", Toast.LENGTH_LONG)
            .show();
        }
    
        public boolean onSingleTapUp(MotionEvent e) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "onSingleTapUp", Toast.LENGTH_LONG)
            .show();
            return false;
        }
    
        public boolean onTouch(View v, MotionEvent event) {
            return mGestureDetector.onTouchEvent(event);
        }
    
        public boolean onDoubleTap(MotionEvent e) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "onDoubleTap", Toast.LENGTH_LONG)
                    .show();
            return false;
        }
    
        public boolean onDoubleTapEvent(MotionEvent e) {
            // TODO Auto-generated method stub
            return false;
        }
    
        public boolean onSingleTapConfirmed(MotionEvent e) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "onSingleTapConfirmed", Toast.LENGTH_LONG)
            .show();
            return false;
        }
    
    }

    3. main.xml 程序主界面布局文件↓

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="fill_parent"
     4     android:layout_height="fill_parent"
     5     android:background="@drawable/bg"
     6     android:orientation="vertical" >
     7 
     8     <FrameLayout
     9         android:layout_width="fill_parent"
    10         android:layout_height="wrap_content"
    11         android:layout_gravity="right"
    12         android:orientation="vertical" >
    13 
    14         <TextView
    15             android:id="@+id/counttv"
    16             android:layout_width="50dip"
    17             android:layout_height="wrap_content"
    18             android:layout_gravity="right"
    19             android:background="@drawable/a4" />
    20     </FrameLayout>
    21 
    22     <ViewFlipper
    23         android:id="@+id/details"
    24         android:layout_width="fill_parent"
    25         android:layout_height="fill_parent"
    26         android:autoStart="false"
    27         android:flipInterval="1000"
    28         android:inAnimation="@anim/push_left_in"
    29         android:outAnimation="@anim/push_left_out"
    30         android:persistentDrawingCache="animation" >
    31 
    32         <LinearLayout
    33             android:layout_width="fill_parent"
    34             android:layout_height="wrap_content"
    35             android:orientation="vertical" >
    36 
    37             <Button
    38                 android:id="@+id/Button_next1"
    39                 android:layout_width="fill_parent"
    40                 android:layout_height="wrap_content"
    41                 android:text="Next1" >
    42             </Button>
    43 
    44             <TextView
    45                 android:id="@+id/info"
    46                 android:layout_width="wrap_content"
    47                 android:layout_height="wrap_content"
    48                 android:layout_marginLeft="10dip"
    49                 android:singleLine="true"
    50                 android:text="系统消息"
    51                 android:textSize="20dip" />
    52 
    53             <ListView
    54                 android:id="@+id/list1"
    55                 android:layout_width="fill_parent"
    56                 android:layout_height="fill_parent"
    57                 android:cacheColorHint="#00000000"
    58                 android:divider="@drawable/divider_horizontal_bright" >
    59             </ListView>
    60         </LinearLayout>
    61 
    62         <LinearLayout
    63             android:layout_width="fill_parent"
    64             android:layout_height="wrap_content"
    65             android:orientation="vertical" >
    66 
    67             <Button
    68                 android:id="@+id/Button_next2"
    69                 android:layout_width="fill_parent"
    70                 android:layout_height="wrap_content"
    71                 android:text="Next2" >
    72             </Button>
    73 
    74             <ImageView
    75                 android:id="@+id/image2"
    76                 android:layout_width="fill_parent"
    77                 android:layout_height="wrap_content"
    78                 android:src="@drawable/mail3" >
    79             </ImageView>
    80         </LinearLayout>
    81         
    82     </ViewFlipper>
    83 </LinearLayout>

    4. grouplist.xml ListView 列表项模版文件↓

     1 <?xml version="1.0" encoding="utf-8"?> 
     2 <LinearLayout
     3       xmlns:android="http://schemas.android.com/apk/res/android"
     4       android:layout_width="fill_parent"
     5       android:layout_height="wrap_content"
     6       android:orientation="vertical"
     7       > 
     8     <LinearLayout
     9       android:layout_width="fill_parent"
    10       android:layout_height="wrap_content"
    11       android:orientation="horizontal"
    12       > 
    13             <TextView
    14             android:layout_width="wrap_content"
    15             android:layout_height="wrap_content"
    16             android:textSize="18dip"
    17             android:singleLine="true"
    18             android:layout_marginLeft="10dip"
    19             android:text="版本更新"
    20             />
    21             
    22             <TextView
    23             android:id="@+id/time"
    24             android:layout_width="fill_parent"
    25             android:layout_height="wrap_content"
    26             android:textSize="18dip"
    27             android:singleLine="true"
    28             android:text="2010-11-01"
    29             android:gravity="right"
    30             android:layout_marginRight="6dip"
    31             />
    32      
    33     </LinearLayout>
    34     
    35         <TextView
    36             android:id="@+id/info"
    37             android:layout_width="wrap_content"
    38             android:layout_height="wrap_content"
    39             android:textSize="16dip"
    40             android:singleLine="true"
    41             android:text="版本更新为2.1.1版本,请及时更新.网址..."
    42             android:gravity="right"
    43             android:layout_marginLeft="10dip"
    44             />
    45 </LinearLayout>

    5.使用Android模拟器或者连接Android智能手机运行程序,滑动手机屏幕可以看到翻页的效果。

     本项目代码源于网络,感谢无私分享的人。

  • 相关阅读:
    五子棋
    团队项目:五子棋
    101空降师506团2营E连全体成员
    团队作业七
    作业六
    团队作业(五)——旅游行业的手机App
    团队任务四(无图)
    团队作业三(补二)
    菜的抠脚团队正式成立
    团队作业七
  • 原文地址:https://www.cnblogs.com/_ymw/p/3717975.html
Copyright © 2011-2022 走看看