• 等待的那个卷卷的


    主要是等待框加入到屏幕正中

    package com.ct.waiting;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MainActivity extends Activity implements OnClickListener {
        /** Called when the activity is first created. */
        Waiting mWaiting;
        private Button btnShow;
        private Button btnHide;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            init();
        }
        
        private void init(){
            btnShow = (Button)findViewById(R.id.btn_showwaiting);
            btnHide = (Button)findViewById(R.id.btn_hidewaiting);
            
            btnHide.setOnClickListener(this);
            btnShow.setOnClickListener(this);
        }
        
        private void showWaiting(){
            if(mWaiting == null){
                mWaiting = new Waiting(this);
            }else {
                mWaiting.showWaiting(R.string.waiting);
            }
        }
        
        private void hideWaiting(){
            if(mWaiting != null){
                mWaiting.hideWaiting();
            }
        }
    
    
    
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
            case R.id.btn_hidewaiting:
                hideWaiting();
                break;
            case R.id.btn_showwaiting:
                showWaiting();
            break;
            
            default:
                break;
            }
        }
    }

    waiting类

    package com.ct.waiting;
    
    import android.content.Context;
    import android.graphics.PixelFormat;
    import android.os.Handler;
    import android.os.Message;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.WindowManager;
    import android.view.WindowManager.LayoutParams;
    import android.widget.TextView;
    
    public class Waiting {
    
        private Context context;
        private View waitView;
        private int tipResId;
        private boolean blur;
    
        private WindowManager windowManager;
        private Handler handler;
    
        private boolean waiting;
    
        public Waiting(Context context) {
            this.context = context;
            this.blur = false;
            this.waiting = false;
            this.windowManager = (WindowManager) context
                    .getSystemService(Context.WINDOW_SERVICE);
        }
    
        public void wait(final Runnable runnable) {
            if (runnable == null)
                return;
            if (handler == null) {
                handler = new Handler() {
                    @Override
                    public void handleMessage(Message msg) {
                        hideWaiting();
                    }
                };
            }
            showWaiting();
            new Thread() {
                public void run() {
                    handler.removeMessages(0);
                    try {
                        runnable.run();
                    } catch (Throwable e) {
                    }
                    handler.sendEmptyMessage(0);
                };
            }.start();
        }
    
        public synchronized void showWaiting() {
            // showWaiting(tipResId);
            showWaiting(-1);
        }
    
        public synchronized void showWaiting(int tipResId) {
            try {
                if (waiting)
                    return;
                if (waitView == null) {
                    LayoutInflater inflate = LayoutInflater.from(context);
                    waitView = inflate.inflate(R.layout.waiting_layout, null);
                }
                if (tipResId > 0) {
                    ((TextView) waitView.findViewById(R.id.identify_label))
                            .setText(tipResId);
                }
                int flags = blur ? LayoutParams.FLAG_FULLSCREEN
                        | LayoutParams.FLAG_BLUR_BEHIND
                        : LayoutParams.FLAG_NOT_FOCUSABLE
                                | LayoutParams.FLAG_NOT_TOUCHABLE;
                LayoutParams lp = new LayoutParams(
                        ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT,
                        LayoutParams.TYPE_APPLICATION, flags,
                        PixelFormat.TRANSLUCENT);
                windowManager.addView(waitView, lp);
                waiting = true;
            } catch (Throwable e) {
            }
        }
    
        public synchronized void hideWaiting() {
            try {
                if (waiting && waitView != null) {
                    windowManager.removeView(waitView);
                    // waitView = null;
                }
                waiting = false;
            } catch (Throwable e) {
            }
        }
    
        public Waiting setBlur(boolean blur) {
            this.blur = blur;
            return this;
        }
    
        public Waiting setTipResource(int strResId) {
            this.tipResId = strResId;
            return this;
        }
    
        public boolean isWaiting() {
            return waiting;
        }
    }

    视图文件

    R.layout.waiting_layout
    <?xml version="1.0" encoding="UTF-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/waiting_view"
        android:layout_width="300dip"
        android:layout_height="fill_parent"
        android:background="@android:drawable/dialog_frame"
        android:orientation="horizontal"
        android:padding="20dp" >
    
        <ProgressBar
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp" />
    
        <TextView
            android:id="@+id/identify_label"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:gravity="center"
            android:paddingLeft="3dp"
            android:paddingRight="5dp"
            android:textColor="#eee"
            android:textSize="22dp" />
    
    </LinearLayout>
  • 相关阅读:
    C# 程序一个cmd命令窗口执行多条dos命令
    单例模式学习
    C#中的typeof()和GetType()的区别
    C#判断字符串A是否包含字符串B--by winter
    ASP.NET内置对象Session缺点及解决办法---by winter
    冒泡排序--by winter
    as关键字---?号用法---各种路径
    自创page类中获取当前用户权限 --by winter
    自建的Page类的使用--by winter
    无法添加App_Code文件的解决办法
  • 原文地址:https://www.cnblogs.com/ct732003684/p/2787706.html
Copyright © 2020-2023  润新知