以前都是學習Activity,對於佈局都沒有作過學習,這裏就簡單學習下吧。下面看下Android Studio下有哪些控件:html
這裏分爲Widgets,Text Fields,Containers,Date & Time和Expert。java
其中Widgets微件主要是一些簡單地單一的功能,像TextView用來顯示一些文字信息,Button用來觸發按鈕,RadioButton,CheckBox,Switch都是選擇用的,ImageButton是能夠添加圖片,ImageView用來顯示圖片,ProgressBar是進度條,SeekBar是可拖動的進度條,Rating Bar是點星的功能,Spinner是下拉列表,WebView是用來顯示web頁面的。這裏通常都是靜態的顯示爲主,用戶只有點擊拖動,不多輸入。linux
Text Fields主要是一些動態的和用戶交互的內容,也即EditText,通常都須要輸入。像Plain Text,Person Name,Password,E-mail,Phone,Postal Address, Multiline Text,Time,Date,Number等都是須要輸入的信息。 android
Containers是容器的意思,這裏基本上都是一個一個經常使用的view的容器。web
Date & Time主要是一些時間和日期的控件。網絡
Expert大概是專家級用的吧,不太明白,之後再看看。app
這裏先簡單學習下TextView,Button,EditView,ImageView,ProcessBar,AlertDialog,ProcessDialog等。ide
首先是前面兩個在前段時間已經學習過了的,TextView和Button。先學習下TextView,先看下系統爲咱們建立的代碼:佈局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.example.jared.uiwidgettest.MainActivity"> <TextView android:text="Hello World!" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView" /> </RelativeLayout>這裏主要看下TextView這個控件的代碼,這裏基本上都是xml來實現的。<TextView …… />,在這裏面填寫須要實現的佈局和內容等。其中android:text是要顯示的問題,android:layout是佈局,android:id是在代碼實現時須要獲取控制的惟一標識符。
顯示效果以下:
學習
package com.example.jared.uiwidgettest; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button button1; private Button button2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new MyOnClickListener()); button2 = (Button)findViewById(R.id.button2); button2.setOnClickListener(new MyOnClickListener()); } class MyOnClickListener implements View.OnClickListener { @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: Toast.makeText(MainActivity.this, "Button1 is clicked !", Toast.LENGTH_SHORT).show(); break; case R.id.button2: Toast.makeText(MainActivity.this, "Button2 is clicked !", Toast.LENGTH_SHORT).show(); default:break; } } } }
<EditText android:id="@+id/editText" android:layout_below="@id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" />
<EditText android:id="@+id/editText" android:layout_below="@id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Input something for test" android:maxLines="3"/>這裏設置了3行,運行以下所示:
package com.example.jared.uiwidgettest; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button button1; private Button button2; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.editText); button1 = (Button)findViewById(R.id.button1); button2 = (Button)findViewById(R.id.button2); button1.setOnClickListener(new MyOnClickListener()); button2.setOnClickListener(new MyOnClickListener()); } class MyOnClickListener implements View.OnClickListener { @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: String editdata = editText.getText().toString(); Toast.makeText(MainActivity.this, "Edit content: " + editdata, Toast.LENGTH_SHORT).show(); break; case R.id.button2: Toast.makeText(MainActivity.this, "Button2 is clicked !", Toast.LENGTH_SHORT).show(); default:break; } } } }
package com.example.jared.uiwidgettest; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button button1; private Button button2; private EditText editText; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.editText); button1 = (Button)findViewById(R.id.button1); button2 = (Button)findViewById(R.id.button2); imageView = (ImageView)findViewById(R.id.image) ; button1.setOnClickListener(new MyOnClickListener()); button2.setOnClickListener(new MyOnClickListener()); } class MyOnClickListener implements View.OnClickListener { @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: String editdata = editText.getText().toString(); Toast.makeText(MainActivity.this, "Edit content: " + editdata, Toast.LENGTH_SHORT).show(); break; case R.id.button2: Toast.makeText(MainActivity.this, "Button2 is clicked !", Toast.LENGTH_SHORT).show(); imageView.setImageResource(R.drawable.monalisa); default:break; } } } }
<ProgressBar android:id="@+id/processbar" android:layout_below="@id/image" android:layout_width="match_parent" android:layout_height="wrap_content" />
package com.example.jared.uiwidgettest; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button button1; private Button button2; private EditText editText; private ImageView imageView; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.editText); button1 = (Button)findViewById(R.id.button1); button2 = (Button)findViewById(R.id.button2); imageView = (ImageView)findViewById(R.id.image); progressBar = (ProgressBar)findViewById(R.id.progressbar); button1.setOnClickListener(new MyOnClickListener()); button2.setOnClickListener(new MyOnClickListener()); } class MyOnClickListener implements View.OnClickListener { @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: //String editdata = editText.getText().toString(); //Toast.makeText(MainActivity.this, "Edit content: " + editdata, // Toast.LENGTH_SHORT).show(); if(progressBar.getVisibility() == View.GONE) { progressBar.setVisibility(View.VISIBLE); } else { progressBar.setVisibility(View.GONE); } break; case R.id.button2: Toast.makeText(MainActivity.this, "Button2 is clicked !", Toast.LENGTH_SHORT).show(); imageView.setImageResource(R.drawable.monalisa); default:break; } } } }
<ProgressBar android:id="@+id/progressbar" android:layout_below="@id/image" android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" android:max="100"/>
package com.example.jared.uiwidgettest; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; public class MainActivity extends AppCompatActivity { private Button button1; private Button button2; private EditText editText; private ImageView imageView; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.editText); button1 = (Button)findViewById(R.id.button1); button2 = (Button)findViewById(R.id.button2); imageView = (ImageView)findViewById(R.id.image); progressBar = (ProgressBar)findViewById(R.id.progressbar); button1.setOnClickListener(new MyOnClickListener()); button2.setOnClickListener(new MyOnClickListener()); } class MyOnClickListener implements View.OnClickListener { @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: //String editdata = editText.getText().toString(); //Toast.makeText(MainActivity.this, "Edit content: " + editdata, // Toast.LENGTH_SHORT).show(); if(progressBar.getVisibility() == View.GONE) { progressBar.setVisibility(View.VISIBLE); } else { progressBar.setVisibility(View.GONE); } break; case R.id.button2: //Toast.makeText(MainActivity.this, "Button2 is clicked !", // Toast.LENGTH_SHORT).show(); //imageView.setImageResource(R.drawable.monalisa); int progress = progressBar.getProgress(); progress += 10; progressBar.setProgress(progress); break; default:break; } } } }
package com.example.jared.uiwidgettest; import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button button1; private Button button2; private EditText editText; private ImageView imageView; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.editText); button1 = (Button)findViewById(R.id.button1); button2 = (Button)findViewById(R.id.button2); imageView = (ImageView)findViewById(R.id.image); progressBar = (ProgressBar)findViewById(R.id.progressbar); button1.setOnClickListener(new MyOnClickListener()); button2.setOnClickListener(new MyOnClickListener()); } class MyOnClickListener implements View.OnClickListener { @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: AlertDialogShow(); break; case R.id.button2: Toast.makeText(MainActivity.this, "Button2 is clicked !", Toast.LENGTH_SHORT).show(); break; default:break; } } } public void AlertDialogShow() { AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this); dialog.setTitle("This is Dialog"); dialog.setMessage("Something you should care"); dialog.setCancelable(false); dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }); dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }); dialog.show(); } }這裏實現了一個AlertDialogShow方法,在button被按下的時候,調用,運行結果以下:
package com.example.jared.uiwidgettest; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; public class MainActivity extends AppCompatActivity { private Button button1; private Button button2; private EditText editText; private ImageView imageView; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.editText); button1 = (Button)findViewById(R.id.button1); button2 = (Button)findViewById(R.id.button2); imageView = (ImageView)findViewById(R.id.image); progressBar = (ProgressBar)findViewById(R.id.progressbar); button1.setOnClickListener(new MyOnClickListener()); button2.setOnClickListener(new MyOnClickListener()); } class MyOnClickListener implements View.OnClickListener { @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: AlertDialogShow(); break; case R.id.button2: ProgressDialogShow(); break; default:break; } } } public void AlertDialogShow() { AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this); dialog.setTitle("This is Dialog"); dialog.setMessage("Something you should care"); dialog.setCancelable(false); dialog.setPositiveButton("確認", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }); dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }); dialog.show(); } public void ProgressDialogShow() { ProgressDialog progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setTitle("This is Progress dialog"); progressDialog.setMessage("Loading..."); progressDialog.setCancelable(true); progressDialog.show(); } }這裏實現了一個ProgressDialogShow方法,在按鈕button2按下時出發,運行效果以下所示: