android Splash简单炫酷UI界面

来源:互联网 发布:淘宝店铺卖 编辑:程序博客网 时间:2024/04/19 15:22

MainActivity代码:

import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.Window;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.splash);    }}

activity_main.xml代码:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:gravity="center"    android:layout_height="match_parent">    <TextView        android:text="你好"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>

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.zhjy.splashdt.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.zhjy.splashdt.PullDoorView></FrameLayout>

自定义的布局:

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 :huangxianfeng on 2016/10/14. * 上滑Splash界面,滑动不超过一般的时候松手有个回弹效果 */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);            }        }    }}

更多资源源码下载:
不一样的RecyclerView优雅实现复杂列表布局
android自定义视频播放器
MediaPlayer和SurfaceView的结合使用
FloatingActionButton的使用
多层Fragment与ViewPager结合使用

0 0
原创粉丝点击