官方的API文件: Add a Floating Action Button
官方的文件將建置FloatingActionButton功能的方法做了蠻清楚的描述
這邊對於相關的API和方法做更詳細地解釋和實作
對於FloatingActionButton的元件設定,
可以參考筆者這篇:[Android] FloatingActionButton:元件與Library設定
官方的範例:按下FloatingActionButton,下方跑出Toast元件的快顯訊息
筆者這邊使用按下FloatingActionButton後,跑出AlertDialog,像是下方的形式。
FloatingActionButton類別解析
FloatingActionButton有繼承View類別,所以可以使用setOnClickListener
方法
setOnClickListener
用來處理當View被click時,所引發的動作
AlertDialog.Builder類別使用建造者模式(Builder Pattern)將AlertDialog.Builder建造出來
Android大量使用建造者模式,會在之後的文章再討論這個部分。
AlertDialog.Builder的方法使用後大部分都會回傳AlertDialog.Builder型別的物件,所以在使用上各個方法的順序性並不影響AlertDialog.Builder的建置
記得最後要使用show
方法,回傳AlertDialog物件,AlertDialog即可建置完成。
FloatingActionButton實作練習
分別使用Java & Kotlin實作
import android.app.AlertDialog;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("Title")
.setMessage("Choose")
.setPositiveButton("OK", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
}
});
}
}
可以使用Java 8的lambda語法讓程式碼更簡潔
fab.setOnClickListener(v ->
new AlertDialog.Builder(this)
.setTitle("Title")
.setMessage("Choose")
.setPositiveButton("OK", (dialog, which) -> {})
.show());
import android.app.AlertDialog
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fab.setOnClickListener {
AlertDialog.Builder(this)
.setTitle("Title")
.setMessage("Choose")
.setPositiveButton("OK") { dialog, which -> }
.show()
}
}
}
Kotlin在lambda語法的使用上,比Java更加簡潔
由於lamda語法的出現讓程式碼需要寫的行數更少更方便,但有時候久了會忘記他原本未使用lambda語法的面貌,時不時可以用最原本的方式撰寫恢復一下記憶