`

Android App使用指南的开发

阅读更多

在用户正式使用APP之前,通常会做一个使用指南,提示用户在应该怎么操作或者增加了什么新功能,请看QQ通讯录的使用指南: 

guide01guide02

     用手指滑动切换图片 
     下方的点将改变颜色 
     暗示当前的图片在整组图片的位置.

 

 

 

 

 

 

我的解决办法:往ViewFlipper组件里面填充图片,在切换图片的时候,记录当前位置,默认从0开始,切换到下一张就加1,到上一张就减1,改变对应位置的ImageView的样式

首先准备5张已经制作好的帮助图,另外还有2张圆点图,一张是橙色,表示选中,一张是灰色,表示未被选中.

以下部分关键代码,配有注释: 

布局文件:

View Code
复制代码
<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android%22
    android:layout_width="
fill_parent" 
    android:layout_height
="fill_parent" 
    android:gravity
="center" >

    <ViewFlipper 
        
android:id="@+id/viewFlipper" 
        android:layout_width
="fill_parent" 
        android:layout_height
="fill_parent" 
        android:flipInterval
="1000" 
        android:gravity
="center" 
        android:persistentDrawingCache
="animation" > 
    </ViewFlipper>

    <LinearLayout 
        
android:id="@+id/layout_point" 
        android:layout_width
="fill_parent" 
        android:layout_height
="wrap_content" 
        android:layout_gravity
="bottom" 
        android:layout_marginBottom
="110dp" 
        android:gravity
="center" 
        android:orientation
="horizontal" > 
    </LinearLayout>

</FrameLayout>
复制代码

这些图片可能在发布新版本后要更换,而且数量也可能会改变,于是采取动态的创建ImageView的办法,JAVA代码:

自定义的圆点ImageView:

View Code
复制代码
class PointImage extends ImageView {
        LinearLayout.LayoutParams margins = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

        public PointImage(Context context) {
            super(context);
            margins.setMargins(20, 0, 0, 0);
            setLayoutParams(margins);
            normal();
        
        }

        public void choose() {
            setBackgroundResource(R.drawable.app_tips_point_choose);
        }

        public void normal() {
            setBackgroundResource(R.drawable.app_tips_point_normal);
        }

    }
复制代码

自定义的指南图ImageView:

View Code
复制代码
class GuideImage extends ImageView {

        public GuideImage(Context context, Integer resId) {
            super(context);
            setImageResource(resId);
            setScaleType(ScaleType.FIT_XY);
        }

    }
复制代码

初始化activity的视图信息

View Code
复制代码
private void initView() {
        mGestureDetector = new GestureDetector(this);
        viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);
        layout_point = (LinearLayout) findViewById(R.id.layout_point);
        context = getApplicationContext();

        for (int i = 0; i < guideId.length; i++) {
            PointImage pointImage = new PointImage(context);
            GuideImage guideImage = new GuideImage(context, guideId[i]);
            if (i == 0) {
                pointImage.choose();
            }
            layout_point.addView(pointImage);
            viewFlipper.addView(guideImage);

        }
    }
复制代码

实现OnGestureListener接口里面的onFling方法,执行滑动手势事件

View Code
复制代码
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        Log.i("kcl", "counter=" + counter);
        if (e1.getX() - e2.getX() > 80) {
            viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
            viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
            if (counter < guideId.length-1) {
                viewFlipper.showNext();
                counter++; //记录位置
                setPointChoose();
            } else {
                startActivity(new Intent(getApplication(), MainNavTab.class));
                this.finish();
            }
            return true;
        } else if (e1.getX() - e2.getX() < -80) {
            viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));
            viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));
            if (counter > 0) {
                viewFlipper.showPrevious();
                counter--;
            }
            setPointChoose();
            return true;
        }
        return false;
    }
复制代码
1
2
分享到:
评论

相关推荐

    基于Android Studio的指南针开发

    在本教程中,我们将深入探讨如何使用Android Studio开发一个指南针应用。Android Studio是Google官方推出的集成开发环境(IDE),专为Android应用开发设计。它提供了丰富的工具集,包括代码编辑器、调试器以及构建...

    Android App设计开发 PPT

    【Android App设计开发 PPT】课程内容概览 在Android移动开发领域,Android Studio作为官方推荐的集成开发环境,已经成为开发者的主要工具。本PPT课程是2017年更新的最新教学资源,旨在帮助学习者全面掌握Android...

    微博Android SDK使用指南_v11.12.01

    微博Android SDK使用指南是指在Android平台上使用微博SDK进行开发的指导手册。本指南将详细介绍如何申请App Key、注册应用程序的包名和签名、集成SDK、参数配置、初始化SDK、使用微博授权等步骤。 1. 申请App Key ...

    Android开发-指南针【多种传感器实现】

    在Android开发中,指南针应用是一种常见的功能,它利用设备内置的传感器来指示地球的磁场北。...开发者可以通过修改和学习这个项目,深入了解Android传感器的使用和数据处理技巧,提升自己的Android应用开发能力。

    基于Android的指南针作业App开发(源码+说明+演示视频).rar

    基于Android的指南针作业App开发(源码+说明+演示视频).rar 基于Android的指南针作业App开发(源码+说明+演示视频).rar 基于Android的指南针作业App开发(源码+说明+演示视频).rar 基于Android的指南针作业App开发(源码...

    Android Gradle权威指南高清版

    接下来,我们详细解读一下Android Gradle权威指南高清版中可能包含的知识点,这些知识点是为Android开发人员量身定制,从基础到进阶,覆盖了Gradle在Android项目中的各个方面。 1. Gradle基础概念:介绍Gradle的...

    Lazarus开发Android应用程序指南(2017新版)第一部分

    本指南将详细介绍如何使用Lazarus来开发Android应用程序,特别关注2017年更新版的新特性与优化。 在2017年的版本中,Lazarus为Android开发带来了一系列改进,包括更好的兼容性、优化的性能以及更多的组件支持。首先...

    智能家居Android APP源码

    在这个项目中,开发者使用Java或Kotlin编程语言编写APP,利用Android SDK(软件开发工具包)进行开发,遵循Android设计指南构建用户界面。 2. **Android Studio**:Android Studio是Google官方的集成开发环境(IDE...

    基于Android开发的课程表APP

    下面将详细探讨这款APP的主要特点和涉及的Android开发知识点。 首先,CRUD功能是任何数据管理应用的核心。在Android开发中,这通常涉及到SQLite数据库的使用。SQLite是一种轻量级的关系型数据库,适用于移动设备,...

    Android Studio开发实战:从零基础到App上线

    《Android Studio开发实战:从零基础到App上线》是一本旨在帮助初学者全面掌握Android应用开发的实战指南。书中的内容涵盖了从环境搭建、基本概念理解到实际项目开发的全过程,旨在让读者能够从无到有,独立完成一个...

    android 指南针app源码

    【Android指南针App源码解析】 本指南针App是一款基于Android平台的应用,它不仅提供了基本的指南针功能,还能够显示海拔高度和大气压力信息,为户外活动爱好者提供了更为全面的导航体验。开发者使用了IntelliJ ...

    基于Android Studio开发的安卓的相册管理app

    通过以上技术点,我们可以看到这个相册管理app是一个综合性的项目,涵盖了Android开发的多个重要方面。开发者不仅需要掌握基本的编程技能,还需要了解用户体验设计、数据库管理和网络通信等相关知识。对于学习...

    记事本Android APP开发

    通过学习和实践这个记事本APP的开发,开发者能够掌握Android应用的基本架构,理解如何与数据库交互,以及如何创建响应用户操作的界面。这是一个很好的起点,为进一步的Android开发打下坚实基础。随着技能的提升,...

    基于Android Studio开发的答题APP

    综上所述,基于Android Studio开发答题APP涵盖了从UI设计、数据管理、用户交互到性能优化等多个方面,是一个综合性的Android开发实践。通过这个项目,开发者可以深入理解Android应用开发的全过程,提升自己的技能...

    微博Android SDK使用指南_v11.11.11

    微博Android SDK使用指南_v11.11.11 微博Android SDK使用指南_v11.11.11是微博开放平台提供的一份详细的指南,旨在帮助开发者顺利地将微博SDK集成到自己的Android应用程序中。以下是根据该指南生成的相关知识点: ...

    基于Android Studio开发的安卓的记事本app

    此外,应用还包含了运行文档,这可能是开发者提供的详细指南,涵盖了如何安装、启动和使用App的步骤。源代码的提供使学习者能够深入理解每个功能的实现细节,对初学者来说是一份宝贵的教育资源。 至于apk安装包和...

    地图app合集Android开发

    在Android开发中,遵循Material Design指南能帮助创建一致且吸引人的界面。开发者需要考虑按钮的布局、颜色搭配、字体选择以及触摸反馈等元素,确保用户能够自然地与应用交互。 最后,BaiduLocationDemo可能包含了...

    Android开发天气预报APP

    标题"Android开发天气预报APP"意味着我们将构建一个能够显示实时天气信息的应用。这涉及到与天气API的交互,例如OpenWeatherMap或AccuWeather,这些API可以提供城市的温度、湿度、风速等信息。开发者需要学会如何...

    基于Android Studio开发的安卓的通讯录管理app

    【基于Android Studio开发的安卓通讯录管理App】是一款利用谷歌提供的Android Studio集成开发环境构建的应用程序,它专注于管理和操作用户的联系人数据。该应用涵盖了多种关键功能,包括新增联系人、编辑现有联系人...

Global site tag (gtag.js) - Google Analytics