欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android自定义类似于QQ的消息提示框,android自定义,效果还不错,整体上是Tr

来源: javaer 分享于  点击 48362 次 点评:164

Android自定义类似于QQ的消息提示框,android自定义,效果还不错,整体上是Tr


效果还不错,整体上是Translate动画和FrameLayout布局的结合,下面看一下代码:activiy_main.xml```xml <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```java 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();            }        });    }}
相关栏目:

用户点评