软件也要拼脸蛋——UI开发的点点滴滴(二)

《Android第一行代码(第三版)》学习记录

文章目录

  • 《Android第一行代码(第三版)》学习记录
  • 1. 常见控件的使用方法
    • 1.1 TextView
    • 1.2 Button
    • 1.3 EditText
    • 1.4 ImageView
    • 1.5 ProcessBar
    • 1.6 AlertDiaglog
  • 2.详解4种布局
    • 2.1 线性布局(LinearLayout)
    • 2.2 相对布局(RelativeLayout)
    • 2.3 帧布局(FrameLayout)
  • 3. 创建自定义控件
    • 3.1 引入布局
  • 4. ListView
    • 4.1 ListView的简单用法
    • 4.2 定制ListView的界面
    • 4.3 提升ListView的效率
    • 4.4 ListView的点击事件
  • 5. RecyclerView
    • 5.1 RecyclerView的简单用法
    • 5.2 实现横向滚动和瀑布流布局
    • 5.3 RecyclerView的点击事件


1. 常见控件的使用方法

1.1 TextView

TextView主要用于在界面上显示一段文本信息:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/text_view"
        android:text="This is a TextView!"/>
    
LinearLayout>

具体的相关属性参考: TextView | Android Developers


1.2 Button

与用户进行交互的一个重要控件:

<LinearLayout android:orientation="vertical"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        android:text="Button"/>

LinearLayout>

具体的相关属性参考: Button | Android Developers


接下来在Activity.kt中为该按钮绑定监听事件:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_button)

        val button = findViewById<Button>(R.id.button)
        button.setOnClickListener {
            Toast.makeText(this, "You click the button!", Toast.LENGTH_SHORT).show()
        }
    }

1.3 EditText

用户在该控件中输入和编辑文本:

<LinearLayout android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/edit_text"
        android:hint="Type something here"/>
LinearLayout>

具体的相关属性参考: EditText | Android Developers


该控件同样可以在Activity.kt中获取,结合Button或其他控件来执行相关操作:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_edit_text)

        val editText = findViewById<EditText>(R.id.edit_text)
        val buttonSend = findViewById<Button>(R.id.button_send)
        buttonSend.setOnClickListener {
            var inputText = editText.text.toString()
            Toast.makeText(this, inputText, Toast.LENGTH_SHORT).show()
        }
    }

1.4 ImageView

ImageView用于在界面显示图片,图片通常放在drawable目录:

<LinearLayout android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/image_view"
        android:src="@drawable/audio"/>

LinearLayout>

具体的相关属性参考: ImageView | Android Developers


可以利用按钮的点击事件对ImageView中的图片进行动态替换:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_image_view)

        val buttonChange = findViewById<Button>(R.id.button_change)
        val imageView = findViewById<ImageView>(R.id.image_view)

        buttonChange.setOnClickListener {
            imageView.setImageResource(R.drawable.image2)
        }
    }

1.5 ProcessBar

PrograssBar是显示一个进度条,表示正在加载数据:

<LinearLayout android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <ProgressBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/process_bar"
        
                    

你可能感兴趣的:(ui,android,java)