一个app启动页滑动翻页介绍的demo

最近了解了一下app启动页滑动翻页介绍,根据自己查找的资料还有别人的写的demo,自己也写了一个,分享一下。

实现效果:

   




代码:


package com.app.startdemo;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainActivity extends Activity {
   ViewPager viewPage;
   TextView tvStart;
   TextView[] textColor=new TextView[3];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewPage=(ViewPager) findViewById(R.id.vp_page);
        tvStart=(TextView) findViewById(R.id.tv_start);
        //ViewPage加载的数据源
        LayoutInflater infl=LayoutInflater.from(this);
        final ArrayList<View> views=new ArrayList<View>();
        for(int i=0;i<3;i++){
            String name="what"+i;
            views.add(infl.inflate(getResources().getIdentifier(name, "layout", getPackageName()), null));
        }
        //初始化下面的三个圆点
        textColor[0]=(TextView) findViewById(R.id.tv_paget1);
        textColor[1]=(TextView) findViewById(R.id.tv_paget2);
        textColor[2]=(TextView) findViewById(R.id.tv_paget3);
        
        
        PagerAdapter adapter=new PagerAdapter() {
            
            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                // TODO Auto-generated method stub
                return arg0==arg1;
            }
            
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return views.size();
            }
            
            @Override
            public void destroyItem(ViewGroup container, int position,
                    Object object) {
                container.removeView(views.get(position));
            }
            
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                container.addView(views.get(position));
                return views.get(position);
            }
        };
        
        viewPage.setAdapter(adapter);
        viewPage.addOnPageChangeListener(new MyonPageChangeListener());
        viewPage.setOffscreenPageLimit(3);
        tvStart.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });
    }
    
    class MyonPageChangeListener implements OnPageChangeListener{

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void onPageSelected(int position) {
            //滑动到哪一个页面就把对应的圆点颜色改变
            textColor[position].setBackgroundColor(Color.RED);
            //如果不是第一页就把上一页对应的圆点颜色还原
            if(position!=0){
                textColor[position-1].setBackgroundColor(Color.WHITE);
            }
            //如果不是最后一页就把下一页对应的圆点颜色还原
            if(position!=2){
                textColor[position+1].setBackgroundColor(Color.WHITE);
                //隐藏启动按钮
                tvStart.setVisibility(View.GONE);
            }
            //如果是最后一页就显示启动按钮
            if(position==2){
                tvStart.setVisibility(View.VISIBLE);
            }
        }
        
    }

}


布局文件:

<FrameLayout 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.startdemo.MainActivity" >
    
   <android.support.v4.view.ViewPager
        android:id="@+id/vp_page"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/page1"
        >
        
    </android.support.v4.view.ViewPager>
    
    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical"
        
        >
       <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="0dp"
           android:layout_weight="1"
           android:gravity="center|bottom"
           >
           <TextView
            android:id="@+id/tv_start"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:background="@null"
            android:text="现在开启"
            android:textSize="20sp"
            android:textColor="#ffffff"
            android:gravity="center"
            android:visibility="gone"
            />
       </LinearLayout>
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:gravity="center|top"
        android:orientation="horizontal"
        >
        <TextView
            android:id="@+id/tv_paget1"
            android:layout_width="5dp"
            android:layout_height="5dp"
            android:background="#ffffff"
            />
        <TextView
            android:id="@+id/tv_paget2"
            android:layout_width="5dp"
            android:layout_height="5dp"
            android:background="#ffffff"
            android:layout_marginLeft="10dp"
            />
        <TextView
            android:id="@+id/tv_paget3"
            android:layout_width="5dp"
            android:layout_height="5dp"
           android:background="#ffffff"
           android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    
    </LinearLayout>
    
     
</FrameLayout>



关于ViewPage加载的数据源是三个XML布局文件:内容很简单就是LinearLayout加一个背景图片

详细解释就不写了,注释很详细,还有一个注意事项就是由于加载的图片比较大,我选的是720X1080分辨率的图片,造成运行的时候viewpage滑动有些卡顿,后来知道是因为我只在一个drawable目录下放置着三个图片,最好是在每个目录下都放置图片,然后再运行时就不会卡顿了,这个问题是有关屏幕适配的问题,有兴趣可以自己了解。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
package com.bim.splash; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import com.bim.smarterpark.R; public class GuideActivity extends Activity implements OnPageChangeListener { private ViewPager vp; private ViewPagerAdapter vpAdapter; private List<View> views; // 底部小点图片 private ImageView[] dots; // 记录当前选中位置 private int currentIndex; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.guide); // 初始化面 initViews(); // 初始化底部小点 initDots(); } private void initViews() { LayoutInflater inflater = LayoutInflater.from(this); views = new ArrayList<View>(); // 初始化引导图片列表 views.add(inflater.inflate(R.layout.what_new_one, null)); views.add(inflater.inflate(R.layout.what_new_two, null)); views.add(inflater.inflate(R.layout.what_new_three, null)); // 初始化Adapter vpAdapter = new ViewPagerAdapter(views, this); vp = (ViewPager) findViewById(R.id.viewpager); vp.setAdapter(vpAdapter); // 绑定回调 vp.setOnPageChangeListener(this); } private void initDots() { LinearLayout ll = (LinearLayout) findViewById(R.id.ll); dots = new ImageView[views.size()]; // 循环取得小点图片 for (int i = 0; i < views.size(); i++) { dots[i] = (ImageView) ll.getChildAt(i); dots[i].setEnabled(true);// 都设为灰色 } currentIndex = 0; dots[currentIndex].setEnabled(false);// 设置为白色,即选中状态 } private void setCurrentDot(int position) { if (position < 0 || position > views.size() - 1 || currentIndex == position) { return; } dots[position].setEnabled(false); dots[currentIndex].setEnabled(true); currentIndex = position; } // 当滑动状态改变时调用 @Override public void onPageScrollStateChanged(int arg0) { } // 当当前面被滑动时调用 @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } // 当新的面被选中时调用 @Override public void onPageSelected(int arg0) { // 设置底部小点选中状态 setCurrentDot(arg0); } }
要使用Python封装一个APP,我们可以使用Kivy库来进行开发。以下是一个简单的示例,演示如何使用Kivy封装一个简单的APP。 首先,确保您已经安装了Kivy库。您可以使用以下命令来安装: ``` pip install kivy ``` 然后,创建一个Python文件,例如`main.py`,并添加以下代码: ```python from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.uix.label import Label class MyApp(App): def build(self): layout = BoxLayout(orientation='vertical') label = Label(text='Hello, World!') button = Button(text='Click Me') layout.add_widget(label) layout.add_widget(button) return layout MyApp().run() ``` 在上面的代码中,我们定义了一个名为`MyApp`的类,继承自`App`类。在`build`方法中,我们创建了一个`BoxLayout`布局,并添加了一个标签和一个按钮到该布局中。最后,我们将该布局作为APP的根部件进行返回。 最后一行代码`MyApp().run()`用于运行APP。 保存并运行这个Python文件,您将会看到一个简单的APP窗口弹出,其中包含一个标签和一个按钮。 这只是一个简单的示例,实际上您可以在APP中添加更多的部件和功能,根据您的需求进行定制。Kivy提供了丰富的部件和布局选项,使您能够创建各种复杂的界面。 请注意,封装一个完整的APP可能涉及到更多的工作,例如处理用户交互、导航、数据存储等。这个示例只是为了演示如何使用Kivy封装一个简单的APP,供您参考和入门。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值