Android寒假實訓雲筆記總結——歡迎頁面

來源:互聯網
上載者:User

標籤:

歡迎頁面使用的是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>

 

Android寒假實訓雲筆記總結——歡迎頁面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.