成功开发Android app-7(多页面、添加事件、监听、动画)

安卓手机APP开发__输入事件的概述 在安卓上,在你的应用程序上从用户的交互中发出的事件被拦截的方式有多种. 当考虑你的用户界面上的事件时,方法是捕捉用户交互的特定的视图对象上的事件. 视图类提供这么做的方法. 你能使用的构造你的页面布局的各种各样的视图类,你可能注意到对于用户界面的事件 有一些公开的回调方法 看起来是很有用的.当在那些对象上发生了相应的动作时,由安卓 框架调用这些方法 阅读详情

多页面

多页面我们通常采用注册来跳转

1.创建layout文件

前面说过了 ,我们先把页面都放在res/layout里,也就是创建的acticity的xml文件

2.创建java文件并创建class继承Activity

在app/java文件夹下创建一个newpage1.java文件
继承Activity并重写onCreate方法


public class newpage1 extends Activity {
//重写onCreate() 方法,绑定layout页面
//new_activity 为创建在res/layout下的xml页面
@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.new_activity);
    }
    }

3.绑定activity

我们在AndroidMainfest.xml文件中进行新页面的注册(绑定)


<!-- 注册活动窗口 -->
<!-- activity绑定java (newpage1 就是创建在java文件夹下的newpage1.java)  -->
<activity android:name=".newpage1"></activity>

动画

什么是动画

动画:随着时间变化的图像(页面)

实际Android里有两种动画:

  1. Property Animation(属性动画)
  2. View Animation(视图动画)

属性动画

如何添加属性动画

一个动画定义在res/animator/filename.xml(filename将作为资源唯一的ID来使用)中在指定的时间来修改目标属性例如背景颜色

该xml动画文件中可能包含单独的<set>、 <objectAnimator>或者 <animator>,也可以是<set>标签包裹<set>、 <objectAnimator>或者 <animator>其中的一个或者多个。

<set>
属性变化的集合
包含<set>、 <objectAnimator>或者 <valueAnimator>其中的一个或者多个。

<objectAnimator>
不能在动画xml文件中来设置要设置动画的对象。
只能通过setTarget() 提前设置和loadAnimator()加载
包含<animator>可以设置的所有属性

<animator>
简单地在指定的时间去执行一个动画。

基本语法

<set
  android:ordering=["together" | "sequentially"]>

    <objectAnimator
        android:propertyName="string"  
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <animator
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <set>
        <animator
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>
    </set>
</set>

android:ordering 指定动画的播放模式

  1. sequentially :循环播放
  2. together :同时播放(默认)

android:propertyName
string 类型
这个属性是必须要有的,它指定了要变化的对象的属性名
例如
“alpha”
“background”

android:duration
int 类型
指定动画持续的时间
单位为毫秒,默认是300毫秒,也就是3秒

android:valueFrom
int 类型、float 类型 或者是color 类型
这个属性不是必须要有的,指定了动画在属性值是多少的适合开始,如果不指定,默认是属性加载完成后就开始
color 类型是六位十六进制的数字来表示

android:valueTo
int 类型、float 类型 或者是color 类型
这个属性是必须要有的,
color 类型是六位十六进制的数字来表示

android:startOffset
int 类型
指定动画延迟时间,延迟后调用 start() 方法

android:repeatCount
int 类型
指定了动画的重复次数

  • -1 :无限重复
  • 0 :不重复
  • 正整数 :重复该正整数次

android:repeatMode
设置动画在循环结束时 下个动画开始的方式
android:repeatCount 的值要为-1或者正整数 ,android:repeatMode 才能生效

  • repeat : 动画从上次动画的正方向开始重复播放
  • reverse : 动画从上次动画的反方向开始重复播放

android:valueType
如果这个值为color 类型 不要指定这个属性, animation 自动处理 color类型
inttype :指定动画值是整数   
floatType(默认) :指定动画值是浮点数

视图动画

视图渐变动画,使用像动画的起点、终点、大小、旋转的数据等来让视图发生变化来形成动画。

两种视图动画框架

  1. 渐变动画 :一个单独的图像或者视图上通过执行一系列指定转换形成一个动画
  2. 帧动画 :通过显示一系列的图像来形成动画的效果

如何添加视图动画

我们可以在视图页面来定义动画,但是这是不被提倡的,官网文档提倡新建一个xml文档来防止动画所需的数据。

xml中定义了要发生的变换、何时发生以及应用这些变换所需的时间。转换可以是顺序的,也可以是同时的——例如,可以让文本视图的内容从左向右移动,然后旋转180度,或者可以同时移动和旋转文本。每个变换都会获取一组特定于该变换的参数(大小更改的起始大小和结束大小、旋转的起始角度和结束角度等等),以及一组公用参数(例如,开始时间和持续时间)。要使多个转换同时发生,请给它们相同的开始时间;要使它们连续,请计算开始时间加上前面转换的持续时间。

动画XML文件在Android项目的res/anim/目录中。
动画xml文件中可能包含单独的<alpha>、<scale>、<translate>、<rotate>、<set>,也可以是<set>标签包裹<alpha>、<scale>、<translate>、<rotate>、<set>其中的一个或者多个。
默认情况下,会同时应用所有动画,如果要按顺序发生,必须指定startOffset属性。

<alpha>
改变视图透明度,可以做到渐入渐出的效果

<scale>
改变视图的缩放比例,来对视图进行缩放

<translate>
改变视图的位置,来对视图进行平移

<rotate>
改变视图的角度,来对视图进行旋转

<set>
渐变动画的集合
包含<alpha>、<scale>、<translate>、<rotate>、<set>其中的一个或者多个。

基本语法

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@[package:]anim/interpolator_resource"
    android:shareInterpolator=["true" | "false"] >
    <alpha
        android:fromAlpha="float"
        android:toAlpha="float" />
    <scale
        android:fromXScale="float"
        android:toXScale="float"
        android:fromYScale="float"
        android:toYScale="float"
        android:pivotX="float"
        android:pivotY="float" />
    <translate
        android:fromXDelta="float"
        android:toXDelta="float"
        android:fromYDelta="float"
        android:toYDelta="float" />
    <rotate
        android:fromDegrees="float"
        android:toDegrees="float"
        android:pivotX="float"
        android:pivotY="float" />
    <set>
        ...
    </set>
</set>

android:interpolator
用于指定interpolator(插入器)资源,可以设置该属性会调用默认的interpolator(插入器)

android:shareInterpolator
boolean 类型
设置是否共享interpolator(插入器)资源

android:fromAlpha
float 类型
动画开始的不透明度
1.0 : 不透明
0.0 : 全透明
取0.0-1.0 其中的一个值,大小决定了透明程度,值越大不透明度越高,反之,值越小透明度越高

android:toAlpha
float 类型
动画结束的不透明度
1.0 : 不透明
0.0 : 全透明
取0.0-1.0 其中的一个值,大小决定了透明程度,值越大不透明度越高,反之,值越小透明度越高

android:fromXScale
float 类型
动画开始时X轴方向上的缩放比例

android:toXScale
float 类型
动画结束时X轴方向上的缩放比例

android:fromYScale
float 类型
动画开始时Y轴方向上的缩放比例

android:toYScale
float 类型
动画结束时Y轴方向上的缩放比例

android:pivotX
float 类型
沿着x轴缩放比例

android:pivotY
float 类型
沿着x轴缩放比例

android:fromXDelta
float 类型 或者 百分比
起始点X轴坐标,以原始的view 为基础 ,如果想以父元素的位置为基础在百分比的后面加上p 例如 “50%p”

android:toXDelta
float 类型 或者 百分比
结束点X轴坐标,以原始的view 为基础 ,如果想以父元素的位置为基础在百分比的后面加上p 例如 “50%p”

android:fromYDelta
float 类型 或者 百分比
起始点Y轴坐标,以原始的view 为基础 ,如果想以父元素的位置为基础在百分比的后面加上p 例如 “50%p”

android:toYDelta
float 类型 或者 百分比
结束点Y轴坐标,以原始的view 为基础 ,如果想以父元素的位置为基础在百分比的后面加上p 例如 “50%p”

android:fromDegrees
float 类型
初始的角度,正数代表顺时针,负数代表逆时针

android:toDegrees
float 类型
结束的角度,正数代表顺时针,负数代表逆时针

作为startAnimation() 的替代方法,可以使用setStartTime() :定义动画的开始时间,使用setAnimation() :将动画指定给视图视图

android设备外接键盘实现监听事件 android设备外接键盘实现监听事件,通过修改android的framework层源码来实现 阅读详情

相关推荐

你的Android App又需要适配了:Android 12,全新的App启动动画

由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。[外链图片转存中…(img-DsSXRrQ9-1711079554747)][外链图片转存中…(img-iXY2SNGu-1711079554748)]由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频。

m0_60567796的博客 1261

Java 安卓开发新手教程 (通俗易懂版)

本篇文章将不会着重于JavaSE,没学的小伙伴个人建议先学习JavaSE(基础版),再来学习安卓开发本篇文章默认配置好了安卓开发环境,将不再进行配置教程(后期会考虑出一集)

安卓开发热爱者 6176

Android监听手机截屏事件

网上监听手机截屏方法教程很多了,我就记录下在学习项目中,项目用到的监听截屏方法。 项目用ContentObserver方法,利用监听者模式监听图片媒体库中的图片变化情况。 如何判断图片是在我们的APP中截屏的呢? 三种方法: * 1. 时间判断, 图片的生成时间在开始监听之后, 并与当前时间相隔10秒内; * 2. 尺寸判断, 图片的尺寸没有超过屏幕的尺寸; * 3. 路径判断, 图片路...

qq_41785058的博客 4841

Android开发之ViewPager实现多页面切换及动画效果(仿Android的Launcher效果)

http://www.cnblogs.com/JczmDeveloper/p/3792832.html Android开发中经常会有引导页或者切换页面等效果,本文采用ViewPager结合动画效果来实现仿Launcher以及页面切换的效果。源码地址在文章最后给出下载。 效果图如下:       1.Viewpager是个Android自带的View视图控件,要使用它,必须

雜貨鋪 1084

Android七种layout布局实例(可直接运行)

五种布局 framelayout linearlayout relativelayout tablelayout tablayout 两个控件 gridview listview实例代码,可直接运行

7个经典Android应用程序实例源代码

android应该程序,很值得大家学习参考,多谢大家支持!

【 转载 】Android中如何为Fragment中的按钮添加监听事件

【转载】Android中如何为Fragment中的按钮添加监听事件 转载自:Fragment添加监听       最近在写一个类似于微信选项卡切换的Demo,每一个切换的页面是用Fragment来实现的。写好了切换效果,但是又遇到了一个问题,如何为每个Fragment中的按钮等元素添加监听事件呢?看了郭大神的博客,恍然大悟。 先放上我的代码: Fragment的xml文件代码: <LinearLayout xmlns:android="http://schemas.and

qq_44743615的博客 2987

android多页面切换大全,8种效果

本文实现ViewPager切换的7中常用动画,实现过程: 1、ViewPager有提供一个接口PageTransformer,ViewPager在做页面切换时(onPageScrolled方法)会调用PageTransformer,来调用我们自定义的特效,逻辑关系如图: 2、动画的实现: 从Android3.1开始,View新增了如下方法: setsetAlpha:透明度变化; setTranslation:位置变化; setScale:缩放变化; setRotation:角度变化; 我们可以用这些方法的组合来实现各种View切换特效; 那是不是说Android3.1之前的版本就没办法使用这些方法呢?当然不是,我们有万能的github,万能的开源项目:https://github.com/JakeWharton/NineOldAndroids 他提供了我们在3.1以下版本实现上述方法的调用,为开源致敬,为共享致敬!!! 下面来看一下例子,立方体效果:

Android实现监听APP启动、前台和后台

IActivityController.aidl是系统自带的aidl,在Am的内部类MyActivityController有实现这个aidl接口,主要用于app状态监听控制。对于应用开发者来说,此接口为给我们提供了各种可能性,比如统计每个app启动次数,crash次数等。这里我们先看下他的方法:activityStarting:当系统正在启动一个activity时会触发,当返回true,表示允许启动。当返回状态noraml/false分别表示停止/拒绝启动activity。

纸上得来终觉浅,绝知此事要躬行 1万+

android项目实战 7个经典的例子

android项目实战 7个经典的例子 希望能帮助到你。

android 7.0 多窗口示例代码

多窗口示例代码

安卓APP开发基础

目录安卓工程构建和第一APP运行 安卓工程构建和第一APP运行 嵌入式学习安卓目的其实是为了掌握简单的安卓APP开发,最重要的目的并不是为了开发APP,而是为了了解APP开发的整个过程,方便为安卓开发工程师提供SDK包,也就是如何在手机APP上实现点灯等控制硬件的一系列操作。 ...

zhuguanlin121的博客 1849

Android App多个入口的实现方法

经常看到有App提供多个入口,就是桌面上显示有多种图标,点不同图标进入不同的功能页。 基本实现很简单,以下是步骤。 1. AndroidManifest.xml里注册别名。 在 <application> 里添加 <activity> <activity-alias android:name=.test android:enabled=false android:icon=@drawable/applogo android:label=@string/app_name android:launchMode=singleTask

Android关于apk安装成功广播监听

有这样的应用场景,apk安装成功后需要重启APP,就需要监听完成安装的回调或者广播 <receiver android:name=".receiver.UpdateReceiver"> <intent-filter android:priority="1000"> <action android:name="android.intent...

无名小辈的博客 4358

超声波探伤技术在风电叶片检测中的实战应用(含设备选型指南)

本文深入探讨了超声波探伤技术在风电叶片高空检测中的实战应用,重点分析了相控阵超声、激光超声等技术的选择与挑战。文章提供了详细的设备选型指南,对比了奥林巴斯、GE及国产品牌的优劣,并解读了典型缺陷的超声图谱特征,旨在帮助风电运维工程师安全、高效地完成叶片内部损伤的无损检测与预防性维护。

desk3的博客 885

c语言版数据结构课程设计 学生成绩管理系统

此学生成绩管理系统完成15项功能,是我经过很多次的修改得到的。花费时间不短,功能齐全,主要完成了:输入,输出,插入,修改,删除,查询,读取文件,写入文件,复制文件,建立索引,显示各种情况下的信息,追加学生信息等等功能。一共15项。   代码如下: // shujujiegou.cpp : 定义控制台应用程序的入口点。///**本程序采用数组链表形式,原因:数组查询速度快,数组也能实现动态存储

Java 1万+

android app启动图片 加动画效果,Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案...

Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案大家在设计APP的末期,都会想给APP搞一些“花里胡哨”的特效来提高APP的B格。博主表示亲测有效的方式你值得拥有,下面是具体步骤:一、在你想要增加这个特效的工程文件夹中新建一个empty Activity(博主举例要加入特效的工程是yiwenNEWS,新建的Avtivity命名是dongActivity)。二、等待系...

weixin_39851872的博客 2113

机器视觉检测到底怎么做,经验分享

笔者做机器视觉检测已经有五六年了,也算是对机器视觉的检测技术有了一定的掌握。总的来说,基于机器视觉的检测技术主要包含三个部分:视觉采集模块、后台分析模块和动作决策模块。这几个分类,跟教科书上的有较大差异,很多同学觉得我在杜撰。笔者也不作反驳,因为这是笔者这些年工作经验的总结,自然区别于教科书。下面我们分开来讲这几个模块,同时会把笔者之前的论文做个推荐总结。 所有文章均可在博主的主页中找到,若无法找到,可以用搜索工具。博主的主页: https://blog.youkuaiyun.com/Aoulun 第..

Aoulun的博客 8677

android 监听动画过程,Android应用开发之Android动画监听实现方法

本文将带你了解Android应用开发Android动画监听实现方法,希望本文对大家学Android有所帮助。Android动画监听实现方法。packagecom.briup.anim;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.MenuItem;...

weixin_36047753的博客 831

解锁RK3588 HDMI输出:分辨率与EDID的深度探索

本文详细探讨了瑞芯微RK3588处理器的HDMI输出分辨率配置与EDID解析技术。文章首先介绍了RK3588处理器的性能特点及其HDMI功能在多媒体和工业领域的应用价值,随后分别阐述了HDMI输出分辨率的硬件连接要求和软件配置方法,包括4K/8K等不同分辨率的配置实例。在EDID部分,深入解析了EDID的数据结构、交互机制,以及数据获取与修改的具体方法。最后总结了配置过程中常见问题的解决方案,并展望了RK3588在高分辨率显示领域的发展前景。全文为开发者提供了RK3588 HDMI显示配置的完整技术指南。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 591

基于STM32设计的太阳能智慧路灯_444

本文设计并实现了一种基于 STM32 的太阳能智慧路灯系统。系统以 STM32F103C8T6 单片机为核心,集成温湿度检测、空气质量检测、环境光照检测、行人检测和路灯故障检测等功能,实现对路灯运行环境和工作状态的实时感知。

462

【H5 Plus】H5+ app监听安卓或苹果的返回操作

监听手机的返回事件。实现返回后列表刷新

云畔的博客 2252

基于STM32F4XX 、HAL库的GXHT30C温湿度传感器驱动应用C语言程序设计

define GXHT30C_STATUS_WRITE_CHK (1 << 0) // 写数据校验状态。#define GXHT30C_STATUS_HUMI_TRACK (1 << 11) // 湿度跟踪报警。#define GXHT30C_STATUS_TEMP_TRACK (1 << 10) // 温度跟踪报警。#define GXHT30C_STATUS_CMD_STATUS (1 << 1) // 命令执行状态。

PP_Cottage的博客 226
上一篇: 成功开发Android app-6(简单页面、添加事件)
下一篇: 自学uni-app (1)uni-app的搭建和基本目录结构
IT_Joliu
博客等级 码龄9年 32粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值