Android开发之《实现类似Toast可以自动消失的提示栏Tip》

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.widget.TextView;

public class TipManager {
    private static final String TAG = TipManager.class.getSimpleName();

    private Context mContext;
    private TextView mView;

    private Timer timer = null;
    private TimerTask cancelTask = null;

    public TipManager(Context context, TextView view) {
        mContext = context;
        mView = view;
    }

    public void init() {
        timer = new Timer();
    }

    public void release() {
        if (cancelTask != null) {
            cancelTask.cancel();
            cancelTask = null;
        }

        if (timer != null) {
            timer.cancel();
            timer = null;
        }
    }

    public void show(CharSequence text) {
        // cancel hide task
        if (cancelTask != null) {
            cancelTask.cancel();
            cancelTask = null;
            timer.purge();
        }

        showUI(text);
    }

    public void show(CharSequence text, long duration) {
        showUI(text);

        // cancel hide task
        if (cancelTask != null) {
            cancelTask.cancel();
            cancelTask = null;
            timer.purge();
        }

        cancelTask = new TimerTask() {
            @Override
            public void run() {
                hideUI("default");
            }
        };

        timer.schedule(cancelTask, duration);
    }

    private void showUI(final CharSequence text) {
        ((Activity) mContext).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                doShow(text);
            }
        });
    }

    private void hideUI(final CharSequence text) {
        ((Activity) mContext).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                doHide(text);
            }
        });
    }

    private void doShow(CharSequence text) {
        mView.setText(text);
        mView.setVisibility(View.VISIBLE);
    }

    private void doHide(CharSequence text) {
        mView.setText(text);
        mView.setVisibility(View.INVISIBLE);
    }
}

  

时间: 2024-10-25 20:46:35

Android开发之《实现类似Toast可以自动消失的提示栏Tip》的相关文章

Android中GPU硬件加速控制及其在2D图形绘制上的局限

图形的渲染可分为两种:软件渲染和硬件渲染.软件渲染是靠CPU计算各种坐标并绘制,主要是占用内存:硬件渲染是靠GPU,主要占用显存,一般的3D图形程序(OpenGL.DirectX)都是GPU加速的. 在Android3.0之前,2D绘图API只支持软件渲染模式,从Android3.0开始,2D绘图API开始支持GPU硬件渲染,即View中的Canvas的绘图操作会使用GPU,所以从Android 3.0(API Level 11)开始,View中就多了一些和硬件相关的方法.如果App的Andro

Android 图形与硬件加速

今天在研究Android-PullToRefresh的时候,突然发现 清单文件中有这么一句 android:hardwareAccelerated="true".以前没有见过,果断百度,发现原来是与硬件加速有关,参见google开发者文档>   说是从Android3.0 开始 ,Android的2D 管道线就被设计成支持硬件加速的了.硬加速使用GPU承担了所有在View的canvas上执行的绘制操作.同时这样的应用也会消耗更多的内存.   启用硬加速最简单的的方法是对整个应用启

Android动画之硬件加速

你的动画写出来卡嘛?流畅嘛 如果你想提升动画的性能,那就是用它-hardware layers. During animations your views may be redrawn each frame. If you use view layers, instead of having to redraw each frame, views render once into an off-screen buffer which can be reused. In addition, har

Android硬件加速介绍与实现

概述 在手机客户端尤其是Android应用的开发过程中,我们经常会接触到"硬件加速"这个词.由于操作系统对底层软硬件封装非常完善,上层软件开发者往往对硬件加速的底层原理了解很少,也不清楚了解底层原理的意义,因此常会有一些误解,如硬件加速是不是通过特殊算法实现页面渲染加速,或是通过硬件提高CPU/GPU运算速率实现渲染加速. 本文尝试从底层硬件原理,一直到上层代码实现,对硬件加速技术进行简单介绍,其中上层实现基于Android 6.0. 硬件加速对App开发的意义 对于App开发者,简单

4.1.Android的硬件加速官方文档

参考 https://developer.android.com/guide/topics/graphics/hardware-accel.html 硬件加速背景知识 在手机客户端尤其是Android应用的开发过程中,我们经常会接触到"硬件加速"这个词.由于操作系统对底层软硬件封装非常完善,上层软件开发者往往对硬件加速的底层原理了解很少,也不清楚了解底层原理的意义,因此常会有一些误解,如硬件加速是不是通过特殊算法实现页面渲染加速,或是通过硬件提高CPU/GPU运算速率实现渲染加速. 本

Android硬件加速

概述 从Android 3.0开始(API L11),Android开始全面使用硬件加速来进行2D渲染,硬件加速是指Android中在View上进行绘制的图形图像都使用GPU来进行绘制,使用硬件加速,在大部分时候都让绘制更加流畅,但付出的代价是需要消耗更多的内存资源. 硬件加速在API L14之上是默认开启的,对于基本的View绘制,通过硬件加速可以增加绘图的流程性,但是要注意的是,并不是所有的2D图形绘制API都支持硬件加速. 通过开发者选项中的"强制进行GPU渲染",用户可以为全局

4.2.Android 硬件加速补充

具体源码分析在之后上传,因为涉及的东西特别多 参考 https://hencoder.com/ui-1-8/ https://blog.csdn.net/OneDeveloper/article/details/79791302 https://www.jianshu.com/p/f1feafffc365 概念 在正式开始之前需要说明一下,作为绘制部分的最后一期,本期内容只是为了内容的完整性做一个补充,因为之前好几期的内容里都有涉及硬件加速的技术点,而一些读者因为不了解硬件加速而产生了一些疑问.

Android应用开发:图形绘制之硬件加速

引言 在Android3.0后,Android的2D渲染通道开始支持硬件加速,也就是说所有View的Canvas绘画动作都会使用GPU,同时也代表着应用程序会损耗更多的内存.而在Android4.0(API14)之后硬件加速功能就被默认开启了.如果你的应用程序是由各种标准View和Drawable组成的,那么硬件加速并不会引起任何不适.众所周知,使用硬件加速会调用到OpenGL,但是OpenGL不同版本会存在不支持一些操作的情况,也就是说,硬件加速可能会影响一些自定义View及绘制过程.因此,A

Android应用程序UI硬件加速渲染技术简要介绍和学习计划

Android系统的流畅性一直被拿来与iOS比较,并且认为不如后者.这一方面与Android设备硬件质量参差不齐有关,另一方面也与Android系统的实现有关.例如在3.0前,Android应用程序UI绘制不支持硬件加速.不过从4.0开始,Android系统一直以"run fast, smooth, and responsively"为目标对UI进行优化.本文对这些优化进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!

Android实战技巧之十七:Linux下的模拟器硬件加速

Intel提供了一个叫HAXM的虚拟硬件加速技术,全称为:Intel Hardware Accelerated Execution Manager. 只要你的CPU是intel的产品并且支持VT(virtualization Technology)就可以使用HAXM技术将你的模拟器的速度提升至真机的水平.目前此技术支持苹果的Mac系统和Windows系统,但Linux平台不在此列. 要知道Android的编译环境Google首推Linux平台(64位的Ubuntu)而Mac系统排到第二位.那么在