|
|
floatUIʵÀýÃëÏÔʾÃë¹Ø±ÕÍÂ˾¹¦ÄÜ
- /*
- floatUIʵÀýÃëÏÔʾÃë¹Ø±ÕÍÂ˾¹¦ÄÜ v2 - AIWROKƽ̨רÓÃ
- ʵÏÖ¿ìËÙÏÔʾºÍ×Ô¶¯¹Ø±ÕµÄÐü¸¡´°ÌáʾЧ¹û
-
- ¹¦ÄÜÌØµã£º
- - ºÁÃë¼¶ÏìÓ¦ËÙ¶È
- - Ö§³Ö×Ô¶¨ÒåÏÔʾʱ³¤
- - Ö§³Ö¶àÖÖÑùʽ£¨³É¹¦¡¢¾¯¸æ¡¢´íÎó¡¢ÐÅÏ¢£©
- - Ö§³Ö¿ÉÍ϶¯¹¦ÄÜ
- - ×Ô¶¯¹Ø±Õ
- */
- // ==================== ºËÐÄÍÂ˾Àà ====================
- function QuickToast() {
- this.toast = null;
- this.isShowing = false;
- this.autoCloseTimer = null;
- }
- // ´´½¨ÍÂ˾½çÃæ
- QuickToast.prototype.create = function(message, type, duration, draggable) {
- var self = this;
-
- // Èç¹ûÒÑÓÐÍÂ˾ÔÚÏÔʾ£¬ÏȹرÕ
- if (this.isShowing && this.toast) {
- this.close();
- }
-
- // ´´½¨ÐµÄfloatUIʵÀý
- this.toast = new floatUI();
-
- // ¸ù¾ÝÀàÐÍÉèÖÃÑÕÉ«
- var bgColor, textColor, borderColor;
- switch(type) {
- case 'success':
- bgColor = '#9028a14b'; // ÂÌÉ«±³¾°
- textColor = '#ffffff';
- borderColor = '#28a14b';
- break;
- case 'warning':
- bgColor = '#90f39c12'; // ³ÈÉ«±³¾°
- textColor = '#ffffff';
- borderColor = '#f39c12';
- break;
- case 'error':
- bgColor = '#90e74c3c'; // ºìÉ«±³¾°
- textColor = '#ffffff';
- borderColor = '#e74c3c';
- break;
- default:
- bgColor = '#903498db'; // À¶É«±³¾°£¨Ä¬ÈÏ£©
- textColor = '#ffffff';
- borderColor = '#3498db';
- }
-
- // ¼ÓÔØ¼ò½àµÄÍÂ˾²¼¾Ö£¨´øIDÓÃÓÚÍ϶¯£©
- this.toast.loadXML(
- '<LinearLayout id="toast_root" orientation="vertical" w="wrap_content" h="wrap_content" ' +
- 'background="' + bgColor + '" padding="15" gravity="center">' +
- ' <TextView text="' + message + '" textColor="' + textColor + '" ' +
- 'textSize="16" layout_width="wrap_content" layout_height="wrap_content" ' +
- 'padding="10 5"/>' +
- '</LinearLayout>'
- );
-
- // ÉèÖóõʼλÖã¨ÆÁÄ»ÖÐÑëÆ«Ï£©
- var screenWidth = screen.getScreenWidth();
- var screenHeight = screen.getScreenHeight();
- var x = (screenWidth - 300) / 2;
- var y = screenHeight * 0.6;
-
- this.toast.setPosition(x, y);
-
- // Èç¹ûÆôÓÃÍ϶¯£¬ÉèÖô¥Ãþʼþ
- if (draggable) {
- this.enableDrag();
- }
-
- this.isShowing = true;
-
- // ÉèÖÃ×Ô¶¯¹Ø±Õ¶¨Ê±Æ÷
- if (duration && duration > 0) {
- var self = this;
- var dur = duration;
- this.autoCloseTimer = setTimeout(function() {
- self.close();
- }, dur);
- }
-
- return this;
- };
- // ÆôÓÃÍ϶¯¹¦ÄÜ
- QuickToast.prototype.enableDrag = function() {
- var self = this;
- var lastX = 0;
- var lastY = 0;
- var dragging = false;
-
- try {
- // »ñÈ¡¸ùÊÓͼ£¨Í¨¹ýID£©
- var rootView = this.toast.findViewById('toast_root');
- if (!rootView) {
- printl("⚠️ ÎÞ·¨»ñÈ¡¸ùÊÓͼ£¬Í϶¯¹¦Äܲ»¿ÉÓÃ");
- return;
- }
-
- // ¶¨Òå´¥Ãþʼþ³£Á¿£¨Èç¹ûViewºÍMotionEvent²»´æÔÚ£©
- var ACTION_DOWN = (typeof MotionEvent !== 'undefined') ? MotionEvent.ACTION_DOWN : 0;
- var ACTION_MOVE = (typeof MotionEvent !== 'undefined') ? MotionEvent.ACTION_MOVE : 2;
- var ACTION_UP = (typeof MotionEvent !== 'undefined') ? MotionEvent.ACTION_UP : 1;
-
- printl("✅ ×¼±¸ÆôÓÃÍ϶¯¹¦ÄÜ...");
-
- // ÉèÖô¥Ãþ¼àÌýÆ÷
- rootView.setOnTouchListener(new android.view.View.OnTouchListener({
- onTouch: function(view, event) {
- try {
- var action = event.getAction();
-
- if (action === ACTION_DOWN) {
- dragging = true;
- lastX = event.getRawX();
- lastY = event.getRawY();
- return true;
- } else if (action === ACTION_MOVE && dragging) {
- var dx = event.getRawX() - lastX;
- var dy = event.getRawY() - lastY;
-
- // »ñÈ¡µ±Ç°Î»ÖÃ
- var currentPos = self.toast.getPosition();
- var newX = currentPos.x + dx;
- var newY = currentPos.y + dy;
-
- // ±ß½ç¼ì²é
- var screenWidth = screen.getScreenWidth();
- var screenHeight = screen.getScreenHeight();
- if (newX < 0) newX = 0;
- if (newY < 0) newY = 0;
- if (newX > screenWidth - 200) newX = screenWidth - 200;
- if (newY > screenHeight - 100) newY = screenHeight - 100;
-
- // ÉèÖÃÐÂλÖÃ
- self.toast.setPosition(newX, newY);
-
- // ¸üÐÂÉϴδ¥ÃþλÖÃ
- lastX = event.getRawX();
- lastY = event.getRawY();
- return true;
- } else if (action === ACTION_UP) {
- dragging = false;
- return true;
- }
- } catch(e) {
- // ¾²Ä¬´¦Àí´íÎó
- }
- return false;
- }
- }));
-
- printl("✅ Í϶¯¹¦ÄÜÒÑÆôÓÃ");
- } catch(e) {
- printl("⚠️ ÆôÓÃÍ϶¯¹¦ÄÜʧ°Ü: " + e);
- }
- };
- // ¹Ø±ÕÍÂ˾
- QuickToast.prototype.close = function() {
- if (this.toast && this.isShowing) {
- var self = this;
- try {
- self.toast.close();
- } catch(e) {
- printl("¹Ø±ÕÍÂ˾ʱ³ö´í: " + e);
- }
- self.isShowing = false;
- self.toast = null;
- self.autoCloseTimer = null;
- }
- };
- // ==================== ±ã½Ýº¯Êý ====================
- // ÏÔʾ³É¹¦Ìáʾ
- function showSuccess(message, duration) {
- var toast = new QuickToast();
- toast.create(message || '²Ù×÷³É¹¦', 'success', duration || 1500);
- return toast;
- }
- // ÏÔʾ¾¯¸æÌáʾ
- function showWarning(message, duration) {
- var toast = new QuickToast();
- toast.create(message || 'Çë×¢Òâ', 'warning', duration || 2000);
- return toast;
- }
- // ÏÔʾ´íÎóÌáʾ
- function showError(message, duration) {
- var toast = new QuickToast();
- toast.create(message || '²Ù×÷ʧ°Ü', 'error', duration || 2500);
- return toast;
- }
- // ÏÔʾÐÅÏ¢Ìáʾ
- function showInfo(message, duration) {
- var toast = new QuickToast();
- toast.create(message || 'ÌáʾÐÅÏ¢', 'info', duration || 1500);
- return toast;
- }
- // ¼«ËÙÏÔʾ£¨500ms×Ô¶¯¹Ø±Õ£©
- function quickShow(message) {
- var toast = new QuickToast();
- toast.create(message || '', 'info', 500);
- return toast;
- }
- // ==================== ʹÓÃʾÀý ====================
- printl("========== ÃëÏÔʾÃë¹Ø±ÕÍÂ˾¹¦ÄÜÑÝʾ v2 ==========");
- printl("Ìáʾ£º³¢ÊÔÍ϶¯±ê¼ÇΪ¿ÉÍ϶¯µÄÍÂ˾\n");
- // ʾÀý1£º»ù´¡¿ÉÍ϶¯ÍÂ˾
- printl("¡¾Ê¾Àý1¡¿¿ÉÍ϶¯µÄ»ù´¡Ìáʾ£¨2Ãëºó×Ô¶¯¹Ø±Õ£©");
- var t1 = new QuickToast();
- t1.create("ÎÒ¿ÉÒÔÍ϶¯Å¶£¡", 'info', 2000, true);
- sleep.second(Ãë=3);
- // ʾÀý2£º³É¹¦Ìáʾ
- printl("\n¡¾Ê¾Àý2¡¿³É¹¦Ìáʾ");
- var t2 = showSuccess("²Ù×÷³É¹¦£¡");
- sleep.second(Ãë=2);
- // ʾÀý3£º¾¯¸æÌáʾ
- printl("\n¡¾Ê¾Àý3¡¿¾¯¸æÌáʾ");
- var t3 = showWarning("Çë×¢Òⰲȫ", 2000);
- sleep.second(Ãë=2.5);
- // ʾÀý4£º´íÎóÌáʾ
- printl("\n¡¾Ê¾Àý4¡¿´íÎóÌáʾ");
- var t4 = showError("ÍøÂçÁ¬½Óʧ°Ü");
- sleep.second(Ãë=3);
- // ʾÀý5£º³¤Îı¾Ìáʾ£¨¿ÉÍ϶¯£©
- printl("\n¡¾Ê¾Àý5¡¿³¤Îı¾¿ÉÍ϶¯Ìáʾ");
- var t5 = new QuickToast();
- t5.create("ÕâÊÇÒ»¸öºÜ³¤µÄÌáʾÐÅÏ¢£¬Äã¿ÉÒÔÍ϶¯ÎÒµ½ÈκÎλÖã¡ÊÔÊÔ¿´°É~", 'warning', 3000, true);
- sleep.second(Ãë=4);
- printl("\n========== ÑÝʾ½áÊø ==========");
- printl("\nʹÓÃ˵Ã÷£º");
- printl("1. quickShow('ÏûÏ¢') - ¿ìËÙÏÔʾ500ms");
- printl("2. showSuccess('ÏûÏ¢', ʱ³¤ms) - ³É¹¦Ìáʾ");
- printl("3. showWarning('ÏûÏ¢', ʱ³¤ms) - ¾¯¸æÌáʾ");
- printl("4. showError('ÏûÏ¢', ʱ³¤ms) - ´íÎóÌáʾ");
- printl("5. showInfo('ÏûÏ¢', ʱ³¤ms) - ÐÅÏ¢Ìáʾ");
- printl("6. ×Ô¶¨Ò壺new QuickToast().create('ÏûÏ¢', 'ÀàÐÍ', ʱ³¤ms, ÊÇ·ñ¿ÉÍ϶¯)");
- printl("\nÀàÐͲÎÊý£º'success', 'warning', 'error', 'info'");
- printl("Í϶¯²ÎÊý£ºtrue=¿ÉÍ϶¯£¬false»ò²»´«=²»¿ÉÍ϶¯");
- /*
- ================ ¹¦ÄÜ˵Ã÷ ================
- Õâ¸ö½Å±¾ÊµÏÖÁËÒ»¸ö¿ìËÙÏÔʾ¡¢×Ô¶¯¹Ø±ÕµÄ¿ÉÍ϶¯ÍÂ˾Ìáʾϵͳ£¬×¨ÎªAIWROKƽ̨Éè¼Æ¡£ËüÌṩÁËËÄÖÖÔ¤ÉèÑùʽ£¨ÂÌÉ«³É¹¦¡¢³ÈÉ«¾¯¸æ¡¢ºìÉ«´íÎó¡¢À¶É«ÐÅÏ¢£©£¬Ö§³Ö×Ô¶¨ÒåÏÔʾʱ³¤£¨½¨Òé500-3000ºÁÃ룩£¬²¢¿ÉÑ¡ÆôÓô¥ÃþÍ϶¯¹¦ÄÜÈÃÓû§ÓÃÊÖÖ¸×ÔÓÉÒÆ¶¯Ìáʾ¿òµ½ÆÁÄ»ÈÎÒâλÖ᣺ËÐÄÌØÐÔ°üÀ¨£ººÁÃë¼¶ÏìÓ¦ËÙ¶È¡¢ÐÂÌáʾ×Ô¶¯¸²¸Ç¾ÉÌáʾ¡¢×Ô¶¯±ß½ç¼ì²â·ÀÖ¹ÍϳöÆÁÄ»¡¢Ìṩ±ã½ÝµÄµ÷Óú¯ÊýÈçshowSuccessÏÔʾ³É¹¦Ìáʾ¡¢showWarningÏÔʾ¾¯¸æÌáʾµÈ¡£ÊÊÓÃÓÚ×Ô¶¯»¯½Å±¾ÖеIJÙ×÷·´À¡¡¢×´Ì¬Ìáʾ¡¢¾¯¸æÌáÐÑ¡¢ÁÙʱ֪ͨµÈ³¡¾°£¬ÈÃÓû§ÌåÑé¸ü¼ÓÓѺúÍÖ±¹Û¡£
- =========================================
- */
¸´ÖÆ´úÂë
|
|