Kotlin ,一种新的书写android 的语言

转载请注明出处

1, 什么是kotlin

Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者。Java是世界上使用最多的编程语言之一,当其他编程语言为更加便于开发者使用而不断进化时,Java并没有像预期那样及时跟进。
使用Kotlin,你可以很容易的在Android工程中替代Java或者与Java混合使用。

2, AS 中kotlin 的配置

1,首先安装kotlin插件

这里写图片描述

2,项目的Project 的build.gradle中添加kotlin 的版本号

// Top-level build file where you can add configuration options common to all sub-projects/modules.
ext.kotlin_version = "1.0.3"
buildscript {
   
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url "https://jitpack.io"
        }
    }
}

在module中的build.gradle
再buildscript中

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 Android 音乐播放器示例,使用 Kotlin 语言: 首先,需要在 AndroidManifest.xml 文件中添加以下权限: ```xml <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> ``` 然后,在 MainActivity.kt 文件中添加以下代码: ```kotlin import android.media.MediaPlayer import android.os.Bundle import android.os.Handler import android.os.Message import android.util.Log import android.view.View import android.widget.SeekBar import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import java.io.IOException class MainActivity : AppCompatActivity() { private var mediaPlayer: MediaPlayer? = null private var isPlaying = false private var isPaused = false private var currentSongIndex = 0 private var songList = mutableListOf<String>() private lateinit var seekBarHandler: Handler private lateinit var runnable: Runnable override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Add songs to playlist songList.add("/sdcard/Music/Song1.mp3") songList.add("/sdcard/Music/Song2.mp3") songList.add("/sdcard/Music/Song3.mp3") // Initialize media player mediaPlayer = MediaPlayer() // Set up seek bar handler to update seek bar position seekBarHandler = object : Handler() { override fun handleMessage(msg: Message) { super.handleMessage(msg) if (mediaPlayer != null) { val currentPosition = mediaPlayer!!.currentPosition seek_bar.progress = currentPosition val duration = mediaPlayer!!.duration val progress = (currentPosition.toFloat() / duration.toFloat() * 100).toInt() seek_bar_percent.text = "$progress%" if (mediaPlayer!!.isPlaying) { runnable = Runnable { sendMessageDelayed(obtainMessage(0), 1000) } postDelayed(runnable, 1000) } } } } // Set up seek bar listener to seek to specific position seek_bar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { if (fromUser) { mediaPlayer?.seekTo(progress) } } override fun onStartTrackingTouch(seekBar: SeekBar) { seekBarHandler.removeCallbacks(runnable) } override fun onStopTrackingTouch(seekBar: SeekBar) { seekBarHandler.removeCallbacks(runnable) mediaPlayer?.seekTo(seekBar.progress) runnable = Runnable { seekBarHandler.sendEmptyMessage(0) } seekBarHandler.postDelayed(runnable, 1000) } }) // Set up play button listener to play or pause current song btn_play.setOnClickListener { if (!isPlaying) { if (isPaused) { mediaPlayer?.start() isPaused = false } else { playSong(currentSongIndex) } isPlaying = true btn_play.setImageResource(R.drawable.ic_pause) } else { mediaPlayer?.pause() isPaused = true isPlaying = false btn_play.setImageResource(R.drawable.ic_play) } } // Set up next button listener to play next song in playlist btn_next.setOnClickListener { if (currentSongIndex < songList.size - 1) { currentSongIndex++ } else { currentSongIndex = 0 } playSong(currentSongIndex) } // Set up previous button listener to play previous song in playlist btn_prev.setOnClickListener { if (currentSongIndex > 0) { currentSongIndex-- } else { currentSongIndex = songList.size - 1 } playSong(currentSongIndex) } } override fun onDestroy() { super.onDestroy() mediaPlayer?.stop() mediaPlayer?.release() mediaPlayer = null seekBarHandler.removeCallbacks(runnable) } private fun playSong(index: Int) { try { mediaPlayer?.reset() mediaPlayer?.setDataSource(songList[index]) mediaPlayer?.prepare() mediaPlayer?.start() seek_bar.max = mediaPlayer!!.duration seekBarHandler.sendEmptyMessage(0) isPlaying = true btn_play.setImageResource(R.drawable.ic_pause) } catch (e: IOException) { Log.e("MainActivity", "Error playing song: ${e.message}") } } } ``` 这个示例实现了以下功能: - 播放/暂停当前歌曲; - 播放下一首歌曲; - 播放上一首歌曲; - 显示歌曲进度,并允许拖动进度条到指定位置。 请注意,这只是一个简单的示例,实际的音乐播放器可能需要更复杂的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值