Android自定义类似于QQ的消息提示框

看到QQ的信息提示框,感觉效果很不错,做了一个类似的,展示如下:

点击查看短视频

效果还不错,整体上是Translate动画和FrameLayout布局的结合,下面看一下代码:

activiy_main.xml


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<FrameLayout

android:layout_width="match_parent"

android:layout_height="wrap_content" >

<TextView

android:id="@+id/toast"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:layout_marginBottom="20dp"

android:layout_marginTop="40dp"

android:background="@color/transparent_black"

android:gravity="center"

android:paddingBottom="5dp"

android:paddingLeft="40dp"

android:paddingRight="40dp"

android:paddingTop="5dp"

android:text="@string/toast"

android:textColor="@color/white"

android:textSize="16sp"

android:visibility="invisible" />

<TextView

android:id="@+id/title"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@color/blue"

android:gravity="center"

android:padding="5dp"

android:text="@string/title"

android:textColor="@color/white"

android:textSize="20sp" />

</FrameLayout>

<TextView

android:id="@+id/info"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="10dp"

android:gravity="center"

android:text="@string/hello_world" />

<Button

android:id="@+id/btn"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="30dp"

android:gravity="center"

android:text="@string/btn" >

</Button>

</LinearLayout>

MainActivity.java


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98


package cn.androiddevelop;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.View;

import android.view.animation.Animation;

import android.view.animation.TranslateAnimation;

import android.widget.Button;

import android.widget.TextView;

import cn.androiddevelop.test.R;

public class MainActivity extends Activity {

TextView rootView;

Button btn;

Handler handler;

TextView tv;

Animation mTranslateInAnimation, mTranslateOutAnimation;

boolean flag = true;

@Override

protected void onCreate(Bundle
savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

rootView = (TextView) findViewById(R.id.info);

btn = (Button) findViewById(R.id.btn);

tv = (TextView) findViewById(R.id.toast);

handler = new Handler() {

@Override

public void handleMessage(Message
msg) {

tv.startAnimation(mTranslateOutAnimation);

tv.setGravity(View.INVISIBLE);

super.handleMessage(msg);

}

};

// 定义进入与退出动画

mTranslateInAnimation = new TranslateAnimation(

Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, -1.5f,
Animation.RELATIVE_TO_SELF,

0);

mTranslateInAnimation.setDuration(1000);

mTranslateOutAnimation = new TranslateAnimation(

Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, 0,

Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,

-1.5f);

mTranslateOutAnimation.setDuration(1000);

mTranslateOutAnimation // 动画显示结束后将tv控件隐藏

.setAnimationListener(new Animation.AnimationListener() {

@Override

public void onAnimationStart(Animation
animation) {

}

@Override

public void onAnimationEnd(Animation
animation) {

tv.setVisibility(View.INVISIBLE);

flag = true; //
恢复响应

}

@Override

public void onAnimationRepeat(Animation
animation) {

}

});

btn.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

if (flag) { //
第一次点击按钮生效,在消息框退出前不响应点击

flag = false;

} else {

return;

}

// 显示消息框

tv.startAnimation(mTranslateInAnimation);

tv.setVisibility(View.VISIBLE);

new Thread() {

@Override

public void run() {

try {

sleep(3000);

handler.sendEmptyMessage(0);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}.start();

}

});

}

}

更多文章请前往小胖轩.

时间: 2024-10-01 07:08:37

Android自定义类似于QQ的消息提示框的相关文章

自定义iOS 中推送消息 提示框

看到标题你可能会觉得奇怪 推送消息提示框不是系统自己弹出来的吗? 为什么还要自己自定义呢? 因为项目需求是这样的:最近需要做一个客服系统 包括店铺客服和官方客服两个模块 如果用户当前不在客服界面的时候 要求无论是在app前台 还是app退到后台 顶部都要弹出系统的那种消息提示框 这样的需求 我们就只能自定义一个在app内 弹出消息提示框 实现步骤如下: 1.我们自定义一个view 为 STPushView 推送消息的提示框view

从仿QQ消息提示框来谈弹出式对话框

<代码里的世界> -UI篇 用文字札记描绘自己 android学习之路 转载请保留出处 by Qiao http://blog.csdn.net/qiaoidea/article/details/45896477 [导航] - 自定义弹出式对话框的简单用法 列举各种常见的对话框实现方案 1.概述 android原生控件向来以丑著称(新推出的Material Design当另说),因此几乎所有的应用都会特殊定制自己的UI样式.而其中弹出式提示框的定制尤为常见,本篇我们将从模仿QQ退出提示框来看一

Android:Toast简单消息提示框

Toast是简单的消息提示框,一定时间后自动消失,没有焦点. 1.简单文本提示的方法: //参数1:当前的上下文环境.this或getApplicationContext() //参数2:提示内容 //参数3:显示的时间长短 Toast toast = Toast.makeText(this, "默认的toast", Toast.LENGTH_LONG); toast.show(); 2.自定义位置的方法: Toast toast = Toast.makeText(this, &quo

Android消息提示框Toast

Toast是Android中一种简易的消息提示框.和Dialog不一样的是,Toast是没有焦点的,toast提示框不能被用户点击,而且Toast显示的时间有限,toast会根据用户设置的显示时间后自动消失. 创建Toast的方法总共有2种: 1.Toast.makeText(Context context, (CharSequence text)/( int resId), int duration) 参数:context是指上下文对象,通常是当前的Activity,text是指自己写的消息内

android中常用的弹出提示框

转自:http://blog.csdn.net/centralperk/article/details/7493731 我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有

关于安卓开发通过Toast显示消息提示框

Toast用于在屏幕中显示一个提示信息栏,该消息栏没有任何控制按钮,并且不会获得焦点,经过一定时间后自动消失. 作用:用于显示一些快速提示信息 有两种方式可以显示提示信息框 一: 调用Toast类的make Text()方法创建一个名称为toast(自定义)的Toast对象 关键代码 1 Toast toast = Toast.makeText(this, "要显示的内容", Toast.LENGTH_LONG).show(); 二: 通过Toast类的构造方法创建一个消息提示框 关键

UWP中的消息提示框(一)

不管什么平台,应用内难免会出现一些消息提示框,下面就来聊聊我在UWP里用到的消息提示框. 弹窗也可按是否需要用户操作促发一些逻辑进行分为两大类. 不需要用户干涉的一类: MessageDialog:操作简单,写起来也省事,想具体了解的请参考MSDN 先看看效果 PC上效果: mobile上效果: 再看看代码(●'?'●) 前台: <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" >

CSS+jQuery实现可关闭的智能定位的浮动消息提示框

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>CSS+jQuery实现可关闭的智能定位的

winform消息提示框

摘自:http://www.cnblogs.com/risen/archive/2008/01/15/1039751.html public partial class AlertForm : Form    {        /*         * 在类AlertForm定义的下方,         * 我们创建用于显示的字符串和其颜色的变量,         * 再定义几个Rectangle对象的变量用于放置标题.         * 提示内容以及可以拖动窗体的区域和关闭按钮的区域.