編輯:關於Android編程
* 1,屏幕的選擇和按下返回鍵能更好的管理它的什麼周期方法
* 2,DialogFragment也允許開發者把Dialog作為內嵌的組件進行重用,
類似Fragment(可以在大屏幕和小屏幕顯示出不同的效果)
* 3,橫豎屏切換,傳統的new AlertDialog在屏幕旋轉時, 第一不會保存用戶輸入的值,
而通過DialogFragment實現的對話框則可以完全不必考慮旋轉的問題。
##使用方式
* 兩種方式創建
* 1,onCreateView即使用定義的xml布局文件展示Dialog。
* 或者
* 2,onCreateDialog即利用AlertDialog或者Dialog創建出Dialog。
寫一個EditNameDialogFragment(我沒寫的dialog) 集成DialogFragment
public class EditNameDialogFragment extends DialogFragment{
/**
* 兩種方式創建
* 1,onCreateView即使用定義的xml布局文件展示Dialog。
* 或者
* 2,onCreateDialog即利用AlertDialog或者Dialog創建出Dialog。
*/
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//去掉線條
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
View view = inflater.inflate(R.layout.dialog_fragment, container);
return view;
}
}
public class LoginLoginDialogFragment extends DialogFragment {
private EditText mUsername;
private EditText mPassword;
public interface LoginInputListenner{
void onLoginInputListenner(String usename,String password);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.login_fragment, null);
mUsername = (EditText) view.findViewById(R.id.id_txt_username);
mPassword = (EditText) view.findViewById(R.id.id_txt_password);
builder.setView(view).setPositiveButton("Sign in", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
LoginInputListenner listenner = (LoginInputListenner) getActivity();
listenner.onLoginInputListenner(mUsername
.getText().toString(), mPassword
.getText().toString());
}
}).setNegativeButton("Cancel", null);
return builder.create();
}
}
*=========================================華麗的分割線===========================
public class MyDialogDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 調用布局管理器
Dialog dialog = new AlertDialog.Builder(this)
.setTitle("對話框") // 創建標題
.setMessage("顯示提示信息") // 表示對話框中的內容
.setIcon(R.drawable.pic_m) // 設置LOGO
.create(); // 創建了一個對話框
dialog.show() ; // 顯示對話框
}
}
public class MyDialogDemo extends Activity {
private Button mybut = null ; // 定義按鈕
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 調用布局管理器
this.mybut = (Button) super.findViewById(R.id.mybut) ; // 取得按鈕
this.mybut.setOnClickListener(new OnClickListenerImpl()) ; // 設置事件類
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
Dialog dialog = new AlertDialog.Builder(MyDialogDemo.this)
.setTitle("確定刪除?") // 創建標題
.setMessage("您確定要刪除該條信息嗎?") // 表示對話框中的內容
.setIcon(R.drawable.pic_m) // 設置LOGO
.setPositiveButton("刪除", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setNeutralButton("查看詳情", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).create(); // 創建了一個對話框
dialog.show() ; // 顯示對話框
}
}
public class MyDialogDemo extends Activity {
private ImageButton but = null ; // 定義按鈕
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 調用布局管理器
this.but = (ImageButton) super.findViewById(R.id.but) ; // 取得按鈕
this.but.setOnClickListener(new OnClickListenerImpl()) ; // 設置事件類
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
MyDialogDemo.this.exitDialog() ;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) { // 監聽鍵盤
if (keyCode == KeyEvent.KEYCODE_BACK) { // 返回鍵
this.exitDialog() ;
}
return false ;
}
private void exitDialog(){
Dialog dialog = new AlertDialog.Builder(MyDialogDemo.this)
.setTitle("程序退出?") // 創建標題
.setMessage("您確定要退出本程序嗎?") // 表示對話框中的內容
.setIcon(R.drawable.pic_m) // 設置LOGO
.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MyDialogDemo.this.finish() ; // 操作結束
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).create(); // 創建了一個對話框
dialog.show() ; // 顯示對話框
}
}
public class MyDialogDemo extends Activity {
private Button mybut = null ; // 定義按鈕
private TextView mych = null ; // 定義文本
private String fruitData[] = new String[] { "蘋果", "西瓜", "水蜜桃" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 調用布局管理器
this.mybut = (Button) super.findViewById(R.id.mybut) ; // 取得按鈕
this.mych = (TextView) super.findViewById(R.id.mych) ; // 取得文本
this.mybut.setOnClickListener(new OnClickListenerImpl()) ; // 設置事件類
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
Dialog dialog = new AlertDialog.Builder(MyDialogDemo.this)
.setIcon(R.drawable.pic_m)
.setTitle("請選擇你喜歡吃的水果?")
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setItems(MyDialogDemo.this.fruitData, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MyDialogDemo.this.mych
.setText("您選擇的水果是:"
+ MyDialogDemo.this.fruitData[which]);
}
}).create() ;
dialog.show() ;
}
}
}
public class MyDialogDemo extends Activity {
private Button mybut = null ; // 定義按鈕
private TextView mych = null ; // 定義文本
private TextView mytext = null ; // 定義文本
private String fruitData [] = new String[] { "蘋果", "西瓜", "水蜜桃" };
private String fruitDesc [] = new String[] {
"蘋果,植物類水果,多次花果,具有豐富的營養成分,有食療、輔助治療等功能。",
"西瓜(學名:Citrullus Lanatus,英文:Watermelon),屬葫蘆科,原產於非洲。",
"水蜜桃,在植物分類學上屬於薔薇科,梅屬,桃亞屬,為落葉小喬木。"} ;
private int chNum = 0 ; // 保存選項
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 調用布局管理器
this.mybut = (Button) super.findViewById(R.id.mybut) ; // 取得按鈕
this.mych = (TextView) super.findViewById(R.id.mych) ; // 取得文本
this.mytext = (TextView) super.findViewById(R.id.mytext) ; // 取得文本
this.mybut.setOnClickListener(new OnClickListenerImpl()) ; // 設置事件類
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
Dialog dialog = new AlertDialog.Builder(MyDialogDemo.this)
.setIcon(R.drawable.pic_m)
.setTitle("請選擇你喜歡吃的水果?")
.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MyDialogDemo.this.mych
.setText(MyDialogDemo.this.fruitData[MyDialogDemo.this.chNum]); // 設置選項的名稱
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setSingleChoiceItems(MyDialogDemo.this.fruitData, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MyDialogDemo.this.mytext
.setText(MyDialogDemo.this.fruitDesc[which]);
MyDialogDemo.this.chNum = which ; // 保存選項的索引
}
}).create() ;
dialog.show() ;
}
}
}
public class MyDialogDemo extends Activity {
private Button mybut = null ; // 定義按鈕
private TextView mych = null ; // 定義文本
private String fruitData [] = new String[] { "蘋果", "西瓜", "水蜜桃" };
private boolean chData[] = new boolean[] { true, true, false };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 調用布局管理器
this.mybut = (Button) super.findViewById(R.id.mybut) ; // 取得按鈕
this.mych = (TextView) super.findViewById(R.id.mych) ; // 取得文本
this.mybut.setOnClickListener(new OnClickListenerImpl()) ; // 設置事件類
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
Dialog dialog = new AlertDialog.Builder(MyDialogDemo.this)
.setIcon(R.drawable.pic_m)
.setTitle("請選擇你喜歡吃的水果?")
.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setMultiChoiceItems(MyDialogDemo.this.fruitData,
MyDialogDemo.this.chData,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
for (int x = 0; x < MyDialogDemo.this.fruitData.length; x++) {
if(x == which && isChecked) { // 當前選項被選中
MyDialogDemo.this.mych
.append(MyDialogDemo.this.fruitData[x]
+ "、");
}
}
}
}).create();
dialog.show() ;
}
}
}
public class MyDialogDemo extends Activity {
private Button mybut = null ; // 定義按鈕
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 調用布局管理器
this.mybut = (Button) super.findViewById(R.id.mybut) ; // 取得按鈕
this.mybut.setOnClickListener(new OnClickListenerImpl()) ; // 設置事件類
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
final ProgressDialog proDia = ProgressDialog.show(MyDialogDemo.this,
"搜索網絡", "請耐心等待...");
new Thread(){
public void run(){ // 線程的主體類
try {
Thread.sleep(3000) ; // 運行三秒
} catch (Exception e) {
} finally {
proDia.dismiss() ; // 關閉對話框
}
}
}.start() ;
proDia.show() ; // 顯示對話框
}
}
}
public class MyDialogDemo extends Activity {
private Button mybut = null ; // 定義按鈕
private static final int MAX_PROGRESS = 100 ; // 最大值
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 調用布局管理器
this.mybut = (Button) super.findViewById(R.id.mybut) ; // 取得按鈕
this.mybut.setOnClickListener(new OnClickListenerImpl()) ; // 設置事件類
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
final ProgressDialog proDia = new ProgressDialog(MyDialogDemo.this) ;
proDia.setTitle("搜索網絡") ;
proDia.setMessage("請耐心等待") ;
proDia.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) ; // 水平進度條
proDia.setMax(MAX_PROGRESS) ; // 設置進度的最大值
proDia.setProgress(30) ; // 從進度30開始
proDia.setButton("後台處理", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
proDia.dismiss() ; // 關閉對話框
}
}) ;
proDia.setButton2("詳細信息", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}) ;
proDia.onStart() ; // 啟動進度
new Thread(){
public void run(){ // 線程的主體類
for (int x = 0; x < MAX_PROGRESS; x++) {
try {
Thread.sleep(500); // 運行三秒
} catch (Exception e) {
}
proDia.incrementProgressBy(1) ;
}
proDia.dismiss() ;
}
}.start() ;
proDia.show() ; // 顯示對話框
}
}
1 activity的聲明周期 安卓程序的最重要三個狀態為Resumed/Paused/Stopped, 絕大多數時間程序都會在這3個狀態間切換. 安卓程
平時對牛逼動畫,高級UI,都深入的不多!近日,某頭條,推了一個android技術類視頻(平時在頭條關注技術比較多),講的是加載動畫效果,是動腦學院講的公開課,160分鐘,
偶爾看到之前寫過的代碼,感覺好多東西幾乎在很多項目中都要用到,雖然每個項目的需求和設計都不同,不過實現的效果都是一樣的,可能只是數據格式和一些顏色等的細微差距.但是有的時
傳統界面的布局方式總是行列分明、坐落有序的,這種布局已是司空見慣,在不知不覺中大家都已經對它產生了審美疲勞。這個時候瀑布流布局的出現,就給人帶來了耳目一新的感覺,這種布局