好看的Dialog載入動畫
做開發的時候,為了讓使用者體驗比較好一點,app啟動的時候會有一個啟動歡迎頁,那麼進入到app以後,使用者瀏覽頁面,首先會進行網路請求,然後伺服器響應資料回來,最後展示到頁面上,使用者才能看到豐富的頁面。那麼問題就來了,使用者的網路有2G、3G、4G,現在一般是4G,但是使用者的網路是不一樣的,有些地方網路好,有些比較慢,載入網路資料的時候,網路太慢了就會顯示一篇空白,這給使用者的體驗是非常不好的,所以就到了本節的內容,載入網路資料並且資料還會返回的時候給使用者顯示一個Loading動畫,當然,自帶的有,這裡我們自定義一個Load動畫。
下面我們來看一下程式碼部分,首先是自定義的SysLoading.
public class SysLoading extends LinearLayout{
private View view; //自定義動畫 private AnimationDrawable mAnimation; //載入失敗檢視 private RelativeLayout sys_loading_dialog_fail; //載入中圖片 private ImageView sys_loading_dialog_img; //載入中文字 private TextView sys_loading_dialog_tv; //載入失敗文字 private TextView sys_loading_dialog_fail_tv; //載入時文字 private String loadingText; public SysLoading(Context context) { super(context); } public SysLoading(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = layoutInflater.inflate(R.layout.sys_loading_dialog, this); //載入失敗檢視 sys_loading_dialog_fail = (RelativeLayout) view.findViewById(R.id.sys_loading_dialog_fail); //載入時圖片 sys_loading_dialog_img = (ImageView) view.findViewById(R.id.sys_loading_dialog_img); //載入時文字 sys_loading_dialog_tv = (TextView) view.findViewById(R.id.sys_loading_dialog_tv); sys_loading_dialog_fail_tv = (TextView) view.findViewById(R.id.sys_loading_dialog_fail_tv); } public void showAnim(String loadingText){ this.loadingText = loadingText; //設定動畫特效 initData(); } public void stopAnim(){ mAnimation.stop(); } public void initData() { //設定文字 sys_loading_dialog_tv.setText(loadingText); //設定顯示 view.setVisibility(View.VISIBLE); //設定載入時圖片顯示 sys_loading_dialog_img.setVisibility(View.VISIBLE); //設定載入時文字顯示 sys_loading_dialog_tv.setVisibility(View.VISIBLE); //設定失敗檢視隱藏 sys_loading_dialog_fail.setVisibility(View.GONE); //獲取動畫 sys_loading_dialog_img.setBackgroundResource(R.drawable.sys_loading); //透過ImageView拿到AnimationDrawable mAnimation = (AnimationDrawable) sys_loading_dialog_img.getBackground(); //為了防止只顯示第一幀 sys_loading_dialog_img.post(new Runnable() { @Override public void run() { mAnimation.start(); } }); } //載入失敗呼叫的方法 public void fialLoad(String failStr, View.OnClickListener listener){ //動畫停止 if(null != mAnimation && mAnimation.isRunning()){ mAnimation.stop(); } //失敗檢視顯示 sys_loading_dialog_fail.setVisibility(View.VISIBLE); //設定失敗事件監聽 sys_loading_dialog_fail.setOnClickListener(listener); //設定失敗文字 sys_loading_dialog_fail_tv.setText(failStr); //設定載入時圖片隱藏 sys_loading_dialog_img.setVisibility(View.GONE); //設定載入時文字隱藏 sys_loading_dialog_tv.setVisibility(View.GONE); }
}
然後是sys_loading.xml佈局檔案
xmlns:=””
xmlns:tools=””
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:layout_marginBottom=”30dp”
android:gravity=”center” >
android:id=”@+id/sys_loading_dialog_img”
android:layout_centerHorizontal=”true”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:contentDescription=”@null”/>
android:id=”@+id/sys_loading_dialog_tv”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:textStyle=”normal”
android:layout_marginTop=”15dp”
android:textSize=”14sp”
android:textColor=”@color/black2”
android:layout_below=”@id/sys_loading_dialog_img”
android:gravity=”center”/>
android:id=”@+id/sys_loading_dialog_fail”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:gravity=”center”
android:visibility=”gone”>
android:id=”@+id/sys_loading_dialog_fail_img”
android:layout_centerHorizontal=”true”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:src=”@drawable/sys_loading_dialog_fail”
android:contentDescription=”@null”/>
android:id=”@+id/sys_loading_dialog_fail_tv”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_below=”@id/sys_loading_dialog_fail_img”
android:layout_marginTop=”15dp”
android:textSize=”14sp”
android:textColor=”@color/black2”
android:gravity=”center”/>
最後drawable檔案就不貼出來了,這裡直接給出主要的使用程式碼:
public class MainActivity extends Activity {
private Button btnLoading;
//自定義載入框
private SysLoading sysLoading;
private boolean flag = true;
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 100:
Toast.makeText(MainActivity.this, “載入成功”, Toast.LENGTH_SHORT).show();
//隱藏載入框
sysLoading.setVisibility(View.GONE);
break;
default: break; } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnLoading = (Button) findViewById(R.id.btn_loading); //獲取載入檢視 sysLoading = (SysLoading) findViewById(R.id.sysLoading); Message msg = handler.obtainMessage(); msg.what = 100; sysLoading.showAnim("正在載入..."); handler.sendMessageDelayed(msg, 2000); } public void Loading(View view) { sysLoading.initData(); //載入失敗 sysLoading.fialLoad("載入失敗...", new OnClickListener() { @Override public void onClick(View v) { Message msg = handler.obtainMessage(); msg.what = 100; sysLoading.showAnim("正在載入..."); handler.sendMessageDelayed(msg, 2000); } }); }
}
這裡給出demo的下載地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/810/viewspace-2814285/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- app直播原始碼,等待時的載入動畫(交錯載入動畫)APP原始碼動畫
- 在vue裡新增好看的lottie動畫 (^_^)Vue動畫
- 使用Lottie做載入動畫動畫
- WPF loading載入動畫庫動畫
- 單個LottieAnimationView載入不同的lottie動畫View動畫
- CSS3漂亮的loadding載入動畫CSSS3動畫
- 【動畫消消樂】HTML+CSS 自定義載入動畫 065動畫HTMLCSS
- 【動畫消消樂】HTML+CSS 自定義載入動畫 061動畫HTMLCSS
- 【動畫消消樂】HTML+CSS 自定義載入動畫 062動畫HTMLCSS
- 【動畫消消樂】HTML+CSS 自定義載入動畫 064(currentColor的妙用!)動畫HTMLCSS
- Blend學習之Loading載入動畫動畫
- CSS3 loadding載入動畫效果CSSS3動畫
- 環形動畫載入檢視AnimatedCircleLoadingView動畫View
- CSS3載入等待動畫效果CSSS3動畫
- 超酷的 CSS3 loading 預載入動畫特效CSSS3動畫特效
- 【動畫消消樂】HTML+CSS 自定義載入動畫:怦然心跳 066動畫HTMLCSS
- 「HTML+CSS」--自定義載入動畫【026】HTMLCSS動畫
- 「HTML+CSS」--自定義載入動畫【010】HTMLCSS動畫
- 「HTML+CSS」--自定義載入動畫【016】HTMLCSS動畫
- 「HTML+CSS」--自定義載入動畫【011】HTMLCSS動畫
- 「HTML+CSS」--自定義載入動畫【015】HTMLCSS動畫
- 「HTML+CSS」--自定義載入動畫【008】HTMLCSS動畫
- 「HTML+CSS」--自定義載入動畫【005】HTMLCSS動畫
- 「HTML+CSS」--自定義載入動畫【006】HTMLCSS動畫
- 「HTML+CSS」--自定義載入動畫【007】HTMLCSS動畫
- 「HTML+CSS」--自定義載入動畫【009】HTMLCSS動畫
- 如何用程式碼畫出一幅好看的畫
- 多條目載入(附帶透明的屬性動畫)動畫
- html/css 滾動到元素位置,顯示載入動畫HTMLCSS動畫
- vue實現首屏載入等待動畫 避免首次載入白屏尷尬Vue動畫
- 如何用AI繪畫生成好看的畫作?教你一個方法AI
- 「切圖仔日常」淺談載入動畫兩板斧動畫
- SAP UI的載入動畫效果和幽靈設計(Ghost Design)UI動畫
- 短視訊商城系統,首屏載入loading動畫介面和路由跳轉動畫動畫路由
- Vue canvas繪製圓形進度條動畫載入VueCanvas動畫
- 如何在請求資料時,顯示載入動畫動畫
- AndroidBaseDialog(開發必備)動畫、載入進度、陰影Android動畫
- 直播平臺搭建,自定義View實現loading動畫載入View動畫