編輯:關於Android編程
Toast是一種沒有交點,顯示時間有限,不能與用戶進行交互,用於顯示提示信息的顯示機制,我們可以把它叫做提示框。Toast是沒有依賴性的,大家可能比較了解Dialog等其他顯示方式,他們是必須依賴於Activity的,必須通過在Activity中的調用才可以使用。而Toast則不依賴於Activity,也就是說,沒有Activity,依然可以使用Toast。
Android的四大組件:Activity, Service, Broadcast Receiver, Contet Provider,都是繼承Context的(Context,現在大家稱之為上下文,之前又被翻譯為句柄。),包括整個Application也是繼承於Context的。Toast就是依賴於應用程序Application的Context。
Toast有個靜態方法makeText,一般情況下使用Android中的Toast都是通過這個方法來獲得Toast對象的。
我們首先來看一下makeText方法:
Context context:是指Toast依賴的Application的Context,這裡我們通過方法getApplicationContext()來獲得。
CharSequence text:是指Toast中顯示的內容。
int duration:是指Toast顯示的時間,這裡通過Toast中的兩個常量LENGTH_SHORT和LENGTH_LONG來定義。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">
Toast toast = Toast.makeText(getApplication(), 這是一個Toast,Toast.LENGTH_SHORT);
//通過show()方法來調用Toast
toast.show();
這裡我們通過一個安檢的監聽事件來觸發Toast,具體代碼不再貼出,看結果:
Toast的顯示位置是可以修改的,通過如下語句:
toast.setGravity(Gravity.CENTER | Gravity.LEFT, 0, 0);
也可以設置富文本:
Spanned spanned = Html.fromHtml(This is a Error! , new Html.ImageGetter() {
@Override
public Drawable getDrawable(String s) {
Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return drawable;
}
}, null);
toast1.setText(spanned);
有可能大家會覺得Android自帶的Toast界面不好看,那麼我們可以自定義一個。
1. 定義一個Toast布局.
2.通過構造器創建Toast對象
Toast toast2 = new Toast(getApplicationContext());
3. 通過LayoutInflater獲取布局
LayoutInflater inflater = getLayoutInflater();
View toastView =inflater.inflate(R.layout.my_toast_layout,null);
4. 通過setView方法將布局設置在Toast中
toast2.setView(toastView);
5. 通過setDurationff 設置顯示時長
toast2.setDuration(Toast.LENGTH_SHORT);
6. 通過show方法調用
toast2.show();
MainA的代碼:
public class MainActivity extends Activity implements OnClickListener {
private Button mButtonToast;
private Button mButton2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonToast = (Button) findViewById(R.id.button_toast);
mButton2 = (Button) findViewById(R.id.button2);
mButtonToast.setOnClickListener(this);
mButton2.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button_toast:
Toast toast1 = Toast.makeText(getApplicationContext(), 這是一個Toast,Toast.LENGTH_LONG);
Spanned spanned = Html.fromHtml(This is a Error! , new Html.ImageGetter() {
@Override
public Drawable getDrawable(String s) {
Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return drawable;
}
}, null);
toast1.setText(spanned);
toast1.setGravity(Gravity.CENTER | Gravity.LEFT, 0, 0);
toast1.show();
break;
case R.id.button2:
Toast toast2 = new Toast(getApplicationContext());
LayoutInflater inflater = getLayoutInflater();
View toastView =inflater.inflate(R.layout.my_toast_layout,null);
toast2.setView(toastView);
toast2.setDuration(Toast.LENGTH_SHORT);
toast2.show();
break;
default:
break;
}
}
}
最近學習了Activity的啟動模式,這裡記錄下,以便以後回顧Activity有四種啟動模式,分別為:* standard* singleTop* singleTask*
今天還是給大家帶來自定義控件的編寫,自定義一個ListView的左右滑動刪除Item的效果,這個效果之前已經實現過了,有興趣的可以看下Android 使用S
Java中的內存洩漏java內存洩漏大家都不陌生了,簡單粗俗的講,就是該被釋放的對象沒有釋放,一直被某個或某些實例所持有卻不再被使用導致 GC 不能回收。在Java中,內
隨著微信紅包席卷而來,緊接著微信中的公眾號各大服務鋪天蓋地,都是和我們的生活緊密相連的。就比如輕松籌,比如去哪兒旅行等等,都可以在微信在有所關注,了解動態。