• LancherTest,使用ViewSwitcher


    package org.hjw.lanchertest;
    
    import java.util.ArrayList;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.graphics.drawable.Drawable;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.GridView;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.ViewSwitcher;
    import android.widget.ViewSwitcher.ViewFactory;
    
    public class MainActivity extends Activity {
        
        public static final int NUMBER_PER_SCREEN=16;
        public static class DataItem{//存放应用的图标和名字
            public String dataname;
            public Drawable drawable;
        }
        private ArrayList<DataItem> items=new ArrayList<DataItem>();
        private int screenNo=-1;//当前屏
        private int screenCount;//屏数
        ViewSwitcher switcher;
        LayoutInflater inflater;
        
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            inflater=LayoutInflater.from(MainActivity.this);
            
            for(int i=0;i<40;i++){
                String label=""+i;
                Drawable drawable=getResources().getDrawable(R.drawable.ic_launcher);
                DataItem item=new DataItem();
                item.dataname=label;
                item.drawable=drawable;
                items.add(item);
            }
            
            screenCount=items.size()%NUMBER_PER_SCREEN==0?
                    items.size()/NUMBER_PER_SCREEN:
                        items.size()/NUMBER_PER_SCREEN+1;
            switcher=(ViewSwitcher)findViewById(R.id.viewSwitcher);
            switcher.setFactory(new ViewFactory() {
                
                public View makeView() {
                    // TODO Auto-generated method stub
                return inflater.inflate(R.layout.slidelistview, null);
                }
            });
            next(null);
        }
        
        public void next(View v){
            if(screenNo<screenCount-1){
                screenNo++;
                switcher.setInAnimation(this,R.anim.slide_in_right);
                switcher.setOutAnimation(this,R.anim.slide_out_left);
                
                ((GridView) switcher.getNextView()).setAdapter(adpter);
                switcher.showNext();
            }
        }
        
        public void prev(View v){
            if(screenNo>0){
                screenNo--;
                switcher.setInAnimation(this,R.anim.slide_out_left);
                switcher.setOutAnimation(this,R.anim.slide_in_right);
                
                ((GridView) switcher.getNextView()).setAdapter(adpter);
                switcher.showPrevious();
            }
        }
        
        private BaseAdapter adpter=new BaseAdapter() {
            
            @Override
            public View getView(int arg0, View arg1, ViewGroup arg2) {
                View view=arg1;
                if(arg1==null){
                    view=inflater.inflate(R.layout.labelicon, null);
                }
                
                ImageView imageView=(ImageView)
                        view.findViewById(R.id.imageview);
                imageView.setImageDrawable(getItem(arg0).drawable);
                
                TextView textView=(TextView)view.findViewById(R.id.textview);
                textView.setText(getItem(arg0).dataname);
                return view;
                
            }
            
            @Override
            public long getItemId(int arg0) {
                // TODO Auto-generated method stub
                return arg0;
            }
            
            @Override
            public DataItem getItem(int arg0) {
                // TODO Auto-generated method stub
                return items.get((screenNo)*NUMBER_PER_SCREEN+arg0);
            }
            
            @Override
            public int getCount() {
                if(screenNo==screenCount-1&&items.size()%NUMBER_PER_SCREEN!=0){
                    return items.size()%NUMBER_PER_SCREEN;
                }
                return NUMBER_PER_SCREEN;
            }
        };
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
    }

    ps:1.最关键的代码无非是setFactory那一段,加载GridView组件

         2.BaseAdapter的使用,负责为每屏为显示GridView提供列表项

      3.动画资源文件的使用,下面是往右拖的动画资源文件

    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 设置从右边拖进来的动画
        android:duration指定动画持续时间  -->
        <translate
            android:fromXDelta="100%p"
            android:toXDelta="0"
            android:duration="@android:integer/config_mediumAnimTime" />
    </set>
  • 相关阅读:
    Camera光学、成像和 3A 算法 (视觉),camera开发
    VS编程常见的编译和链接错误
    python文档下载
    如何使用微信小程序云函数发送短信验证码
    微信小程序发送短信验证码完整实例
    微信小程序如何发送短信验证码,无需搭建服务器
    微信小程序60秒倒计时
    发送短信验证码后60秒倒计时
    java实现注册的短信验证码
    java + maven 实现发送短信验证码功能
  • 原文地址:https://www.cnblogs.com/dennisac/p/3157187.html
Copyright © 2020-2023  润新知