Android 简单炫酷的UI界面 之欢迎界面

来源:互联网 发布:java语言集成开发环境 编辑:程序博客网 时间:2024/04/19 09:48

Android UI--欢迎界面
1.将启动图片splash.png,放置在res->drawable-hdpi文件夹中。
2新建布局文件splash.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/mainFrame"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#ffffff" >    <include        android:id="@+id/include_main"        layout="@layout/activity_main" />    <com.example.testdemo.PullDoorView        android:id="@+id/myImage"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="#ddd" >        <TextView            android:id="@+id/tv_hint"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_centerHorizontal="true"            android:layout_marginBottom="10dp"            android:text="上滑可以进入首页"            android:textColor="#ffffffff"            android:textSize="18sp" />    </com.example.testdemo.PullDoorView></FrameLayout>

3.新建PullDoorView类,实现RelativeLayout

package com.example.testdemo;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Color;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.util.DisplayMetrics;import android.view.MotionEvent;import android.view.View;import android.view.WindowManager;import android.view.animation.BounceInterpolator;import android.view.animation.Interpolator;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.Scroller;/** *  * @author jiang-H *  */public class PullDoorView extends RelativeLayout {    private Context mcontext;    private Scroller scroller;    private ImageView imageView;    private int CY;    private int DY;    private int LDY = 0;    private int screenWidth = 0;    private int screenHeigh = 0;    private boolean closeFlag = false;    public PullDoorView(Context context) {        super(context);        mcontext = context;        setupView();    }    public PullDoorView(Context context, AttributeSet attrs) {        super(context, attrs);        mcontext = context;        setupView();    }    @SuppressLint("NewApi")    private void setupView() {        // 将Interpolator设置成有弹跳效果        Interpolator polator = new BounceInterpolator();        scroller = new Scroller(mcontext, polator);        // 获取屏幕分辨率        WindowManager windowManager = (WindowManager) (mcontext                .getSystemService(Context.WINDOW_SERVICE));        DisplayMetrics displayMetrics = new DisplayMetrics();        windowManager.getDefaultDisplay().getMetrics(displayMetrics);        screenHeigh = displayMetrics.heightPixels;        screenWidth = displayMetrics.widthPixels;        // 设置成透明背景        this.setBackgroundColor(Color.argb(0, 0, 0, 0));        imageView = new ImageView(mcontext);        imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,                LayoutParams.MATCH_PARENT));        imageView.setScaleType(ImageView.ScaleType.FIT_XY);// 填充整个屏幕        imageView.setImageResource(R.drawable.splash); // 默认背景        addView(imageView);    }    // 设置推动门背景    public void setBgImage(int id) {        imageView.setImageResource(id);    }    // 设置推动门背景    public void setBgImage(Drawable drawable) {        imageView.setImageDrawable(drawable);    }    // 设置推动门的动画    public void startBounceAnim(int startY, int dy, int duration) {        scroller.startScroll(0, startY, 0, dy, duration);        invalidate();    }    @Override    public boolean onTouchEvent(MotionEvent event) {        int action = event.getAction();        switch (action) {        case MotionEvent.ACTION_DOWN:            LDY = (int) event.getY();            return true;        case MotionEvent.ACTION_MOVE:            CY = (int) event.getY();            DY = CY - LDY;            // 上滑有效            if (DY < 0) {                scrollTo(0, -DY);            }            break;        case MotionEvent.ACTION_UP:            CY = (int) event.getY();            DY = CY - LDY;            if (DY < 0) {                if (Math.abs(DY) > screenHeigh / 2) {                    // 向上滑动超过半个屏幕高度时动画消失                    startBounceAnim(this.getScrollY(), screenHeigh, 450);                    closeFlag = true;                } else {                    // 向上滑动未超过半个屏幕高度时开启向下弹动动画                    startBounceAnim(this.getScrollY(), -this.getScrollY(), 1000);                }            }            break;        }        return super.onTouchEvent(event);    }    @Override    public void computeScroll() {        if (scroller.computeScrollOffset()) {            scrollTo(scroller.getCurrX(), scroller.getCurrY());            // 更新界面            postInvalidate();        } else {            if (closeFlag) {                this.setVisibility(View.GONE);            }        }    }}

4.在MainActivity里,实现onCreate方法

 protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_splash);    }

这样就完成了上滑界面了,快去试试吧!

0 1
原创粉丝点击