`

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应用程序指南

    ### Lazarus开发Android应用程序指南 #### 一、引言 随着移动互联网的快速发展,Android操作系统因其开放性和灵活性而成为智能手机和平板电脑市场的主导者之一。为了满足开发者的需求,多种编程工具和技术应运而生...

    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可以提供城市的温度、湿度、风速等信息。开发者需要学会如何...

Global site tag (gtag.js) - Google Analytics