成功开发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

Python爬虫实战:西瓜视频m3u8解析与FFmpeg下载合并

网络爬虫与流媒体解析是Python工程实践中的常见需求,其核心在于通过HTTP请求获取数据并解析特定格式。m3u8作为HLS协议索引文件,将视频切分为ts分片,便于流式传输。结合FFmpeg的多线程处理能力,可高效完成分片下载与合并,技术价值在于提升视频处理效率。典型应用场景包括视频下载、离线缓存等。本文以西瓜视频为例,详细讲解如何使用requests库提取m3u8地址,并调用FFmpeg批量下载ts分片合并为mp4,涵盖请求伪装、索引解析及常见问题排查。

weixin_31856057的博客 15万+

海康工业相机排雷笔记02-像素格式解析

工业相机使用过程记录 02-像素格式解析 通过将相机输出图像裸数据raw格式直接存图查看 一、黑白/Mono 直接使用相机测试图像存图: 图像中各部分灰度分别为:0、36、73、109、146、182、219、255,以灰度73列为例 (1)Mono 8 该列图像数据为十六进制49,十进制为73,那么Mono 8就是每个像素点占8bit,依次排列。 (2)Mono 10 该列图像数据为十六进制2401,由于相机均为小端数据,实际数据应解析为0124,十进制为292=73*4,那么Mono 10格式为每

yonghuming_66的博客 8357

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

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

weixin_39851872的博客 2113

从零搭建AMESim与Matlab/Simulink联合仿真环境(2024版软件配置详解)

本文详细介绍了2024年最新版AMESim与Matlab/Simulink联合仿真环境的搭建与配置方法。从软件安装顺序、路径设置到编译器配置,逐步指导如何实现高效联合仿真,特别强调了版本兼容性和环境变量设置等关键细节,帮助工程师快速解决常见问题并优化仿真性能。

weixin_42538752的博客 735

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

SoC 内的 CPU、GPU、DSP、NPU 协同执行结构图解析:多异构协同的最新实战体系

随着移动端 AI 能力迅速演进,SoC(System on Chip)内部的多种异构计算单元(CPU、GPU、DSP、NPU)之间的协同执行能力成为衡量芯片智能算力的关键指标。本文基于截至 2025 年 5 月最新主流国产芯片(如海思昇腾、地平线旭日、联发科天玑、高通骁龙 8 Gen 系、寒武纪思元等)在实际落地应用中的公开结构与技术资料,深入解析 CPU-GPU-DSP-NPU 协同执行的体系结构、执行路径与调度逻辑。文章结合 Android NNAPI、Vulkan Compute、自定义调度器等工程实

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 8710

后悔没早点知道!用AI只需四步,一次性讲清高质量论文引言写法(附公式+AI指令)

帮我写SCI 论文撰写引言的“研究背景与重要性”,要求从本研究所属领域的小背景切入,使用现在时态描述该领域的总体状况与发展趋势,突出其在学术研究、实际应用或社会层面的重要价值,并通过一个吸引人的钩子开头,如关键事实、现实问题或学术热点,引导读者关注本主题的重要性。梳理你所在领域和你研究相关的关键成果,但不能罗列所有文献,重点抓核心脉络,这部分最重要的实际上是让你了解别人的研究脉络,然后在每个关键的节点上,引用几篇关键参考文献作支撑,来体现你对领域的熟悉度就可以了。3)研究缺口模糊,没法突出问题的真实价值;

qq_64378896的博客 116

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

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

云畔的博客 2252

TC8:IPv4_HEADER_05-09

所有主机都必须准备好接受最多576个字节的数据报我们知道最大传输单元MTU通常是1500个字节,也就是说一条IP数据报的Header+payload最大1500,那为什么这条测试用例又要求主机准备好接受最多576个字节的IP数据报呢。

jasonj333 512
上一篇: 成功开发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、付费专栏及课程。

余额充值