;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Mensagem de Dia dos Avós: veja os melhores apps para criar e enviar

No dia 26 de julho é celebrado o Dia dos Avós - iStock
No dia 26 de julho é celebrado o Dia dos Avós Imagem: iStock

Vinícius de Oliveira

Colaboração para Tilt, em São Paulo

26/07/2021 15h21

É comemorado nesta segunda-feira, 26 de julho, o Dia dos Avós. A data foi escolhida por ser uma referência a Santa Ana e São Joaquim, que segundo a tradição católica são os pais de Maria e, portanto, avós de Jesus Cristo. A celebração ganhou força a partir da década de 1980, devido à dedicação da portuguesa Ana Elisa do Couto (1926-2007).

Avó de quatro netas e dois netos, Dona Aninha, como ficou conhecida, achava que ninguém dava o merecido valor e reconhecimento aos avós. Por isso, esteve em diversos países como Brasil, Espanha, França, Estados Unidos, Alemanha, África do Sul, Suíça, Canadá, dentre outros, para defender que se celebrasse a data.

Para comemorar o Dia dos Avós, Tilt testou os melhores aplicativos de mensagens e explica o que cada um deles tem a oferecer:

Datas Festivas Imagens (Android)

Esse aplicativo possui mais de mil imagens das mais importantes datas comemorativas. Com navegação fácil e intuitiva, basta ar o menu principal e escolher a comemoração: Dia das Mães, dos Pais, do Amigo e - é claro - dos Avós.

App para fazer mensagem para Dia dos Avós (Android) 1 - Reprodução - Reprodução
Imagem: Reprodução

Feliz Día de los Abuelos (Android)

Quer mandar imagens fofinhas para seus avós? Esse app é o certo para você. São centenas de opções em alta qualidade para você escolher e enviar diretamente nas suas redes sociais. O único porém é que todas elas estão em espanhol.

App para fazer mensagem para Dia dos Avós (Android) 2 - Reprodução - Reprodução
Imagem: Reprodução

Áudio Mensagens Prontas Grátis - Emocionar é Amar (Android)

Envie mensagens em áudio para seus avós neste dia 26 de julho! Este aplicativo possui mensagens de voz gravadas, com fundo musical e temas variados. Dá para selecionar tanto uma voz masculina quanto uma voz feminina para emocionar seus avós.

App para fazer mensagem para Dia dos Avós (Android) 3 - Reprodução - Reprodução
Imagem: Reprodução

Mensagens Prontas (iOS)

Se você está se sentindo meio sem criatividade para enviar um texto bonito para seus avós, esse app pode dar alguma inspiração. São mais de 20 mil frases prontas esperando para serem usadas nas suas redes sociais. Elas são divididas por temas e é possível adicionar um fundo combinando com o texto antes de compartilhar.

App para fazer mensagem para Dia dos Avós (iOS) 2 - Reprodução - Reprodução
Imagem: Reprodução

Mensagens e Frases - Mensagens Diárias e Muito Mais! (iOS)

Com mensagens em português e inglês, este app também tem centenas de textos que podem ser compartilhados diretamente no seu WhatsApp, Facebook ou Twitter. As frases são divididas em categorias como amor, amizade, engraçadas e outras mais.

App para fazer mensagem para Dia dos Avós (iOS) 1 - Reprodução - Reprodução
Imagem: Reprodução

Mensagens, Frases e Status (Android)

Após selecionar a mensagem para seu avô ou sua avó, este aplicativo vai ajudar a fazer uma mensagem personalizada. Escolha o texto especial e adicione uma imagem de fundo, personalize a fonte, a cor, e o tamanho. As possibilidades são inúmeras.

App para fazer mensagem para Dia dos Avós (Android) 4 - Reprodução - Reprodução
Imagem: Reprodução

Mensagens Bonitas e Prontas (Android)

Este aplicativo possui apenas mensagens de texto, que podem ser compartilhadas diretamente nas redes sociais. São mais de 7 mil frases prontas, divididas em 90 categorias diferentes. Destaque para a categoria "Top Enviadas", com as frases mais usadas do app.

App para fazer mensagem para Dia dos Avós (Android) 5 - Reprodução - Reprodução
Imagem: Reprodução