zoukankan      html  css  js  c++  java
  • Android寒假实训云笔记总结——欢迎页

    欢迎页使用的是viewpager,需要适配器。

    注意点:

    1、判断是否是第一次进入这个app。

    2、欢迎页小圆点的逻辑。

    实现原理:

    首先在activity_welcome放入viewpager和固定四个小圆点的图片在下方。

    viewpager用于存放多张欢迎页的图。

    welcome_selectoer用于当在哪一页对应的小圆点为灰色状态。即设置成不可点时状态为灰色。

    viewpager的内容为静态加载进去。

    如图:

    直接贴代码,代码都有注释:

     WelcomeActivity.java

    package com.app.note.activity;
    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.support.v4.view.ViewPager;
    import android.util.Log;
    import android.view.Display;
    import android.view.View;
    import com.app.note.R;
    import com.app.note.adapter.WelcomeAdapter;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.view.Window;
    import android.view.WindowManager;
    import android.view.animation.Animation;
    import android.view.animation.ScaleAnimation;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Handler;
    
    public class WelcomeActivity extends Activity implements OnPageChangeListener,View.OnClickListener {
        private ViewPager viewPager;
        private List<View> viewList;
        private View view1, view2, view3, view4;
        private ImageView points[];//存放小圆圈数组
        private int currentIndex=0;//当前页面,默认首页
        private Button startButton;
        private Boolean isFirstIn = false;
        private SharedPreferences pref;
        private ImageView doge;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //将图片设置为全屏
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            //隐藏标题栏
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            //判断是否第一次使用app
            //第一个参数是文件名,第二参数是操作模式
           /* Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
            Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
            Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
            MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
            MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。*/
            pref = getApplicationContext().getSharedPreferences("FirstOrNo", 0 );
            isFirstIn = pref.getBoolean("isFirstIn",true);
            if(isFirstIn)
            {
                setContentView(R.layout.activity_welcome);
                initViewPager();//初始化ViewPager对象
                initPoint();//初始化导航小圆点
                changefirst();
            }else {
    
                        Intent intent = new Intent(WelcomeActivity.this, LoginActivity.class);
                        startActivity(intent);
                        finish();    }}
    
        private void changefirst(){
            pref = getApplicationContext().getSharedPreferences("FirstOrNo",0);
            SharedPreferences.Editor editor = pref.edit();
            editor.putBoolean("isFirstIn", false);
            editor.commit();
        }
    
        private void initPoint() {
            LinearLayout  linearLayout=(LinearLayout) findViewById(R.id.ll);
            points=new ImageView[4];
            for(int i=0;i<points.length;i++){
                points[i]=(ImageView) linearLayout.getChildAt(i);//遍历LinearLayout下的所有ImageView子节点
                points[i].setEnabled(true);//设置当前状态为允许(可点,灰色)
                //设置点击监听
                points[i].setOnClickListener(this);
    
                //额外设置一个标识符,以便点击小圆点时跳转对应页面
                points[i].setTag(i);//标识符与圆点顺序一致
            }
    
            currentIndex=0;
            points[currentIndex].setEnabled(false);//设置首页为当前页(小点着色,蓝色)
            startButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(WelcomeActivity.this,LoginActivity.class);
                    startActivity(intent);
                    finish();
    
                }
            });
    
    
    
        }
    
    
        private void initViewPager() {
            viewPager=(ViewPager) findViewById(R.id.viewpager);//取得ViewPager实例
            viewList=new ArrayList<View>();//实例化list集合
            startButton=(Button)findViewById(R.id.startbutton);
            //用xml静态添加view
            view1=View.inflate(WelcomeActivity.this, R.layout.view1, null);
            view2=View.inflate(WelcomeActivity.this, R.layout.view2, null);
            view3=View.inflate(WelcomeActivity.this, R.layout.view3, null);
            view4=View.inflate(WelcomeActivity.this, R.layout.view4, null);
    
            viewList.add(view1);
            viewList.add(view2);
            viewList.add(view3);
            viewList.add(view4);
    
    
    
            //设置适配器
            WelcomeAdapter adapter=new WelcomeAdapter(viewList);
    
            //绑定适配器
            viewPager.setAdapter(adapter);
    
            //设置页卡切换监听
            viewPager.setOnPageChangeListener(this);
    
        }
    
        @Override
        public void onPageScrollStateChanged(int arg0) {
    
        }
    
        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
    
        }
    
        @Override
        public void onPageSelected(int position ) {//当前页卡被选择时,position为当前页数
            //当滑动到最后一页时隐藏点
            if(position==3){
                for (int i=0;i<=position;i++)
                {
                    points[i].setVisibility(View.GONE);
                }
                startButton.setEnabled(true);
                startButton.setVisibility(View.VISIBLE);
            }
            //当从最后一页往回滑的时候把点显示出来
            if(currentIndex==3){
                for (int i=0;i<=currentIndex;i++)
                {
                    points[i].setVisibility(View.VISIBLE);
                }
                startButton.setEnabled(false);
                startButton.setVisibility(View.GONE);
            }
            points[position].setEnabled(false);//不可点
            points[currentIndex].setEnabled(true);//恢复之前页面状态
            currentIndex=position;
    
        }
    
        @Override
        public void onClick(View v) {
            viewPager.setCurrentItem((int) v.getTag());
        }
    
    }

    适配器WelcomeAdapter.java

    package com.app.note.adapter;
    
    import android.support.v4.view.PagerAdapter;
    import android.view.View;
    import android.view.ViewGroup;
    
    import java.util.List;
    
    /**
     * Created by hxdn on 2015/12/29.
     */
    public class WelcomeAdapter extends PagerAdapter {
        private List<View> list;
    
        public WelcomeAdapter(List<View> list) {// 利用构造器接收list集合参数
            this.list = list;
        }
    
        @Override
        public int getCount() {// 返回页卡数量
            if (list.size() != 0) {
                return list.size();
            }
            return 0;
        }
    
        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {//判断是否为view对象
            return arg0==arg1;//官方demo给出的建议写法
        }
    
        @Override
        public Object instantiateItem(ViewGroup container, int position) {//实例化一个页卡,view对象存放在ViewGroup里
            container.addView(list.get(position));
            return list.get(position);
        }
    
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {//销毁一个页卡
            container.removeView(list.get(position));
        }
    
    }
    

      布局代码:activity_welcome.xml

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    
        tools:context="com.app.note.activity.WelcomeActivity">
    
        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    
        <LinearLayout
            android:id="@+id/ll"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="20dp"
            android:orientation="horizontal" >
    
            <ImageView
                android:id="@+id/iv1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:clickable="true"
                android:padding="25dp"
                android:src="@drawable/welcome_selector" />
    
            <ImageView
                android:id="@+id/iv2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:clickable="true"
                android:padding="25dp"
                android:src="@drawable/welcome_selector" />
    
            <ImageView
                android:id="@+id/iv3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:clickable="true"
                android:padding="25dp"
                android:src="@drawable/welcome_selector" />
    
            <ImageView
                android:id="@+id/iv4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:clickable="true"
                android:padding="25dp"
                android:src="@drawable/welcome_selector" />
        </LinearLayout>
        <Button
            android:id="@+id/startbutton"
            android:layout_width="160dp"
            android:layout_height="50dp"
            android:text="点击进入"
            android:textSize="20dp"
            android:textColor="@drawable/button_text"
            style="@style/btn_login"
            android:background="@drawable/bg_login_btn_qq"
            android:visibility="gone"
            android:clickable="false"
            android:layout_above="@+id/ll"
            android:layout_centerHorizontal="true" />
    
    </RelativeLayout>
    

      四个页面由于都差不多只贴其中一份xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent">
        <ImageView
            android:id="@+id/iv1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:src="@drawable/welcome1"
            android:scaleType="fitXY"/>
    </LinearLayout>
    

      最重要的选择器的xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:state_enabled="true" android:drawable="@drawable/v_point_pre"
            ></item>
    
        <item
            android:state_enabled="false" android:drawable="@drawable/v_point_gray"
            ></item>
    
    </selector>
  • 相关阅读:
    多重网格法简介(Multi Grid)
    数值分析方法库
    离散外微积分(DEC:Discrete Exterior Calculus)基础
    楔积(Wedge Procut)
    牛顿迭代法(Newton's Method)
    四元素还是向量?
    曲率(Curvature)
    共变导数(Covariant Derivative)
    正定矩阵(Positive-definite Matrix)
    散度(Divergence)和旋度(Curl)
  • 原文地址:https://www.cnblogs.com/hsshy/p/5171544.html
Copyright © 2011-2022 走看看