IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> ViewPager & Kotlin学习 -> 正文阅读

[移动开发]ViewPager & Kotlin学习


ViewPager

  • 标签:<android.support.v4.view.ViewPager/>
  • 适配器:PagerAdapter
@Override
    public int getCount() {//必须实现
        return mViewList.size();
    }
   @Override
    public boolean isViewFromObject(View view, Object object) {//必须实现
        return view == object;
    }
 @Override
 //实例化item
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(mViewList.get(position));
        return mViewList.get(position);
    }
    @Override
    //必须实现,销毁
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView(mViewList.get(position));
    }
  • 翻页动画:ViewPager.PageTransformer
    ????关键在于重写transformPage()方法
public interface PageTransformer {
       /**
        * Apply a property transformation to the given page.
        *
        * @param page Apply the transformation to this page
        * @param position Position of page relative to the current front-and-center
        *                 position of the pager. 0 is front and center. 1 is one full
        *                 page position to the right, and -1 is one page position to the left.
        */
       void transformPage(@NonNull View page, float position);
   }

往左滑动时:view1,view2,view3的position都是不断变小的。
view1的position: 0 → -1 → 负无穷大
view2的position: 1 → 0 → -1
view3的position: 1 → 0

往右滑动时:view1,view2,view3的position都是不断变大的。
view1的position: -1 → 0
view2的position: -1 → 0 → 1
view3的position: 0 → 1→ 正无穷大

当position是正负无穷大时view就离开屏幕视野了。因此最核心的控制逻辑是在[-1,0]和(0,1]这两个区间,通过设置透明度,平移,旋转,缩放等动画组合可以实现各式各样的页面变化效果。

Kotlin入门

配置Kotlin

  • 安装插件
  • 引入包
//build.gradle
buildscript {
    ext.kotlin_version = '1.5.10'

    repositories {
        mavenCentral()
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
//app/build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

buildscript {
    ext.kotlin_version = '1.5.10'

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

基本语法

  1. 没有new关键字
  2. 没有;
  3. 定义变量 var v:TYPE=value
  4. 可空:?

数据类型

Any指不指定类型

a.数值类型(Numbers)

Byte,Short,Int,Long,Float,Double
toInt() / toFloat() / toShort() / toLong() / toByte() / toDouble() / toChar()

b.字符类型(Characters)

Char,必须用单引号’'包起来使用,不能和数字直接操作

c.字符串类型(Strings)

String,索引访问字符s[i]
trimMargin() 删除字符串多余空白
可用""" """拼接多行字符串


字符串模板(String Templates):即在字符串内通过一些小段代码求值并把结果合并到字符串中。模板表达式以美元符 ** $ **开头。

d.布尔类型(Boolean)

true/false

e.数组类型(Arrays)

Array,创建方式:

  1. val a = arrayof(1,2,3)
  2. val b = Array(3,{i->i*2}),参数1 = 数组长度,花括号内是一个初始化值的代码块,给出数组下标 & 初始化值

size()
array[]重载了get和set方法,通过下标获取/设置数据值

Array不允许将Array赋值给Array

  • 声明:class 类名(参数名1:参数类型,参数名2:参数类型...){}
  • 实例化类:var user = User()
  • 主构造函数:,采用constructor关键字,不能包含任何代码,初始化的代码放在以init关键字作为前缀的代码块中
class 类名 constructor(参数名:参数类型){
	init {       
    //...
    }
}

主构造函数可省略constructor关键字

  • 次构造函数:次构造函数必须调用主构造函数,次构造函数必须加constructor关键字
constructor ( 构造函数参数列表 ) : this ( 主构造函数参数列表 ){
	//次构造函数体
}
class User(userName: String) {
    // 主构造函数
    init {
        println(userName)
    }

    // 次构造函数1:可通过this调主构造函数
    constructor() : this("hjc")

    // 次构造函数2:可通过this调主构造函数
    constructor(age: Int) : this("hjc") {
        println(age)
    }

    // 次构造函数3:通过this调主构造函数
    constructor(sex: String, age: Int) : this("hjc") {
        println("$sex$age")
    }
}

  • 继承&重写
    单继承。使用: 实现继承,默认不允许继承。子类默认不可重写父类方法。实现可继承、可重写使用open关键字。子类重写的方法前添加override关键字。
// 父类
open class Food {
    open fun banana() {}
}

// 子类 
class Fruits : Food(){
	// 重写了父类的方法
    override fun banana() {
        super.banana()
    }
}

特殊类

内部类

关键字:inner

class User{
	var age : Int = 0
	inner class UserName{}
}
var username : User.UserName = User().UserName()

接口

关键字:interface
接口中的属性可以被定义,但是不能赋值,子类实现接口并重写属性

区别于Java的接口,Kotlin的接口中的方法可以有方法体。有默认方法体的接口可以不被重写。

interface UserImpl{
    fun getName(): String // 无默认方法体,必须重写
    fun getAge(): Int{    // 有默认方法体,可不重写
        return 21
    }
}
// 实现接口UserImpl:需重写getName() & 可不重写getAge()
class User :UserImpl{
    override fun getName(): String {
        return "xje"
    }
}

同时继承类和实现接口时,类在前,接口在后,逗号隔开

数据类

关键字:data
创建类时自动创建以下4个方法。

  1. getter/setter方法;
  2. equals() /hashCode()对;
  3. toString() :输出 " 类名(参数+参数值) ";
  4. copy()函数:复制一个对象&改变它的一些属性,但其余部分保持不变
data class User()

枚举类

关键字:enum

enum class Color{
	RED, GREEN, BLUE
}

变量&常量

var & val,直接赋值可不指定类型
判断数据类型:is

函数

关键字:fun

fun 函数名(参数名:参数类型):返回值类型{
	函数体
	return 返回值
}

函数存在简写方式:

// 特别注意:存在简写方式,具体示例如下:
// 正常写法
fun add(a: Int, b: Int): Int {
    return a + b
}
// 简写:若函数体只有一条语句 & 有返回值,那么可省略函数体的大括号,变成单表达式函数
fun add(a: Int, b: Int) = a + b;

控制流

if

Kotlin的if语句本身是一个表达式,存在返回值,即可以实现var c = if (a > b) 3 else 4

when

类似Java中的switch

when (a) {
    0 -> {代码块1}
    1 -> {代码块2}
    2,3 -> {代码块3}
    else -> {代码块4}
}

for

与Java中的for类似

while

与Java中的while类似,分为while / do…while

范围使用

in →闭区间[a, b]
until→左闭右开区间 [a,b)
downTo→倒序判断
step→调整步长

类型检查&转换

检查is
智能转换:因为编译器会跟踪不可变值的is检查以及显式转换,并在需要时自动插入(安全的)转换

  • 反向检查:!is
  • 在 && 和 || 的右侧也可以智能转换
  • 在when表达式和while循环里也能智能转换

强制转换as
可空转换操作符as?

相等性判断

结构相等:equals()或者==
引用相等:===

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:18:44  更:2021-07-22 14:20:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 15:07:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码