初学Kotlin之Android

第一次写博客,不足之处,敬请谅解。喷子勿看

Kotlin自从2017Google Android团队宣布成Android的第三官方编辑语言,相信大家多多少少的都有去对Kotlin做了进一步的了解,我在这里就不多说了。

下面不说废话了直接上代码 :

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    button.setOnClickListener(this)
    button1.setOnClickListener(this)

var button: Button? = null
var button1: Button? = null
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    button = findViewById<Button>(R.id.button)
    button1 = findViewById<Button>(R.id.button1)
}

fun getTabView(position: Int): View {
    val view = View.inflate(this@TestActivity, R.layout.layout_tablyout, null)
    val icon = view.findViewById<View>(R.id.tablayout_imageview) as ImageView
    val text = view.findViewById<View>(R.id.tablayout_textview) as TextView
    icon.setBackgroundResource(image[position])
    text.setText(titles[position])
    return view
}

kotlin在获取页面组件的ID时有很多方法,第一种方法其实java编译时用第三法控件有些类似,但Kotlin简单了,kotlin中使用的时候需要注意的事在gradle中必须加上

apply plugin: 'kotlin-android-extensions'

在使用的类里面必须加上

import kotlinx.android.synthetic.main.activity_test.*

activity_test这个就是你的xml布局文件;第二种和第三中其实时一样的一个是外部定义变量,一个是内部定义变量和java中的findViewById也是类似的需要注意一点就是变量的定义kotlin中可以定义无属性变量,且变量必须赋值。

class MainActivity : AppCompatActivity(), View.OnClickListener {}

Kotlin中将java中的extends和implements去掉了

override fun onClick(p0: View?) {
    when (p0?.id) {
        R.id.button ->{  
      changeBG()
      }  
    R.id.button1 ->
      intent()
    }
}

Kotlin中将java的switch替换成when,切R.id.button -> 中不能编写多行代码建议写在一个方法中(若是简单的逻辑也可以使用{}保函在内填入其中)

fun intent() {
     startActivity(Intent().setClass(this, TestActivity::class.java))
}

private fun changeBG() {
     bg.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark))
    
}

companion object {
    fun md5(str: String): String {
        val str = str
        var md = MessageDigest.getInstance("MD5");
        md.update(str.toByteArray())
        val digest = md.digest()
        var i = 0;
        var buf = StringBuffer("");
        for (index in digest.indices) {
            i = digest[index].toInt()
            Log.e("MD5Utils", "index = " + index + "\ni = " + i)
            if (i < 0)
                i += 256;
            if (i < 16)
                buf.append("0");
            buf.append(Integer.toHexString(i));
        }
        return buf.toString()
    }
}

Kotlin中私有方法和共有方法区别的关键字是相同的,共有方法可以省略不写。fun是创建方法的关键字,静态方法需要使用

companion object{}

包涵在内(静态变量相同),有参有返回值方法也对应的有一定使用时请参考md5加密方法

startActivity(Intent().setClass(this, TestActivity::class.java))

Kotlin中将new的关键字去掉了跳转页面时需注意activity的传入

class MyApplication : Application(){
    override fun onCreate() {
        super.onCreate()
        x.Ext.init(this)
        x.Ext.setDebug(true) //是否输出debug日志,开启debug会影响性能。
    }
}

Application的使用和java一样加在AndroidManifest.xml中

fun loginNetwork() {
    val progressDialog = ProgressDialog(this)
    progressDialog.setMessage("正在登陆...")
    progressDialog.show()
    val requestParams = RequestParams("请求地址")
    requestParams.addBodyParameter("key", "value")
    requestParams.connectTimeout = 10000
    x.http().post(requestParams, object : Callback.CommonCallback<String> {
        override fun onSuccess(result: String?) {
            Log.e(TAG, "onSuccess result = " + result)
            text.setText(result)
        }

        override fun onCancelled(cex: Callback.CancelledException?) {
            Log.e(TAG, "onCancelled cex = " + cex)
        }

        override fun onError(ex: Throwable?, isOnCallback: Boolean) {
            Log.e(TAG, "onError ex = " + ex + "\nisOnCallback = " + isOnCallback)
        }

        override fun onFinished() {
            Log.e(TAG, "onFinished")
            progressDialog.dismiss()
        }
    })
}

Kotlin中的网络请求除了post的传参稍稍有点变化其他没有变化

private var myAdapter: MyAdapter? = null
fun initViewPager() {
    myAdapter = MyAdapter(supportFragmentManager)
    pager_view.setAdapter(myAdapter)
    tab_layout.setupWithViewPager(pager_view)
    for (i in 0 until titles.size) {
        val text = tab_layout.getTabAt(i)
        if (text != null) {
            text!!.setIcon(image[i]).setText(titles[i]);
        }
        tab_layout.setTabTextColors(getResources().getColor(R.color.tab_unselected), getResources().getColor(R.color.tab_pitch_on))
    }
}

internal inner class MyAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {
    override fun getItem(position: Int): Fragment {
        return FragmentFactory.getFragment(position)
    }

    override fun getCount(): Int {
        return titles.size
    }
    
    override fun getPageTitle(position: Int): CharSequence? {
        return titles[position]
    }
}

Kotlin中ViewPager+TabLayout+Fragemnt的使用。在这里补充一点TabLayout+ViewPager知识

for (i in 0 until titles.size) {
        val text = tab_layout.getTabAt(i)
        if (text != null) {
            text!!.setIcon(image[i]).setText(titles[i]);
        }
        tab_layout.setTabTextColors(getResources().getColor(R.color.tab_unselected), getResources().getColor(R.color.tab_pitch_on))
    }

需要注意的事for()循环与java有差异,TabLayut中添加图片和文字使用的是tab_layout.getTabAt(i).setIcon().setText()方法添加,setTabTextColors()是设置选中和非选中的字体颜色,TabLayout中同时加载图片和文字时app:tabTextColor和app:tabSelectedTextColor没有作用。

Demo下载地址:AndroidKotlin学习简单使用Demo-Android其他资源-CSDN下载

若有错误和补充欢迎大家评论栏留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Android Kotlin开发视频是一种教学视频,旨在帮助初学者和有经验的开发者学习和掌握使用Kotlin语言在Android平台上进行应用开发的技能和知识。 这些视频主要包括以下内容: 1. Kotlin语言基础:包括变量、数据类型、控制流、函数等基本语法和特性。 2. Android开发基础:介绍Android开发的基本概念、运行机制和常用工具,如Android Studio。 3. KotlinAndroid上的应用:教授如何使用Kotlin语言开发Android应用,包括UI设计、布局、显示数据等方面的知识。 4. 常用框架和库:引导学习者掌握常用的Android开发框架和库,如Retrofit、Glide、RxJava等。 5. 实战项目:通过实际案例项目,帮助学习者将所学知识应用于实际开发中,提升他们的实际开发能力。 通过观看这些视频,学习者可以快速入门Android开发,并且全面了解KotlinAndroid开发中的优势和特点。视频的形式能够直观地展示开发过程,并配有讲解和实际操作,便于学习者跟随和理解。 同时,这些视频可以随时随地观看,有利于自主学习。学习者可以在自己的节奏下学习,以便更好地理解和消化所学知识。此外,视频还可以多次重复观看,帮助学习者巩固和复习学习内容。 总而言之,Android Kotlin开发视频是一种有效的学习资源,可以帮助开发者快速掌握使用Kotlin语言进行Android应用开发的技巧和方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丿末兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值