美文网首页
2020-09-17 一 倒计时welcome页

2020-09-17 一 倒计时welcome页

作者: lodtap | 来源:发表于2020-09-17 16:45 被阅读0次

    1.build.gradle文件配置

    applyplugin:'com.android.application'

    android{

        compileSdkVersion29

        buildToolsVersion"29.0.3"

        defaultConfig{

            applicationId"com.chai.welcome"

            minSdkVersion16

            targetSdkVersion29

            versionCode1

            versionName"1.0"

            testInstrumentationRunner"androidx.test.runner.AndroidJUnitRunner"

        }

        buildTypes{

            release{

                minifyEnabledfalse

                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'

            }

    }

        //Invoke-customs are only supported starting with Android O (--min-api 26)

        compileOptions{

            sourceCompatibility JavaVersion.VERSION_1_8

            targetCompatibility JavaVersion.VERSION_1_8

        }

    }

    dependencies{

        implementation fileTree(dir:"libs",include: ["*.jar"])

    implementation'androidx.appcompat:appcompat:1.2.0'

        implementation'com.google.android.material:material:1.2.1'

        implementation'androidx.constraintlayout:constraintlayout:2.0.1'

        implementation'androidx.navigation:navigation-fragment:2.3.0'

        implementation'androidx.navigation:navigation-ui:2.3.0'

        testImplementation'junit:junit:4.13'

        androidTestImplementation'androidx.test.ext:junit:1.1.2'

        androidTestImplementation'androidx.test.espresso:espresso-core:3.3.0'

        //网络请求库

        implementation'com.squareup.retrofit2:retrofit:2.9.0'

        implementation'com.squareup.retrofit2:retrofit-converters:2.8.1'

        implementation'com.squareup.retrofit2:converter-gson:2.9.0'

        implementation'com.squareup.okhttp3:logging-interceptor:4.8.1'

        implementation'com.squareup.retrofit2:adapter-rxjava2:2.9.0'

        //函数响应式 生命周期库

        implementation'com.trello.rxlifecycle2:rxlifecycle:2.2.2'

        implementation'com.trello.rxlifecycle2:rxlifecycle-components:2.2.2'

        //多标签

        //日志库

        implementation'com.orhanobut:logger:2.2.0'

        //view数据绑定

        implementation'com.jakewharton:butterknife:10.2.3'

        annotationProcessor'com.jakewharton:butterknife-compiler:10.2.3'

        //加载图片

        implementation'com.github.bumptech.glide:glide:4.11.0'

        //导航栏

        implementation'com.android.support:design:29.+'

        //数据库

        implementation'org.xutils:xutils:3.9.0'

        //事件发布-订阅总线

        implementation'org.greenrobot:eventbus:3.1.1'

    }

    2.BaseActivity.java

    public abstract class BaseActivityextends RxAppCompatActivity {

    public static final int MATCH_PARENT = LinearLayout.LayoutParams.MATCH_PARENT;

    public static final int WRAP_CONTENT = LinearLayout.LayoutParams.WRAP_CONTENT;

    public static int displayWidth =0;

    public static int displayHeight =0;

    public static float density =0;

    public Contextcontext;

    @Override

        protected void onCreate(@Nullable Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    density = getResources().getDisplayMetrics().density;

    context =this;

    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();

    displayWidth = displayMetrics.widthPixels;

    displayHeight = displayMetrics.heightPixels;

    }

    public Drawable getMyDrawable(@DrawableRes int id) {

    return ContextCompat.getDrawable(context, id);

    }

    public int getMyColor(@ColorRes int id) {

    return ContextCompat.getColor(context, id);

    }

    public RequestBody createRequestBody(List> list){

    return FormBody.create(new Gson().toJson(list),

    MediaType.parse("application/json; charset=utf-8"));

    }

    public RequestBody createRequestBody(Map paramMap){

    return FormBody.create(new Gson().toJson(paramMap),

    MediaType.parse("application/json; charset=utf-8"));

    }

    public void toSubscribeSingleOb(Observable ob) {

    ob.subscribeOn(Schedulers.io())

    .observeOn(AndroidSchedulers.mainThread())

    .compose(this.bindUntilEvent(ActivityEvent.DESTROY));

    }

    //android点击屏幕上EditText区域以外的任何地方隐藏键盘的方法

        public Boolean hideInputMethod(Context context, View v) {

    InputMethodManager imm = (InputMethodManager) context

    .getSystemService(Context.INPUT_METHOD_SERVICE);

    if (imm !=null) {

    return imm.hideSoftInputFromWindow(v.getWindowToken(),0);

    }

    return false;

    }

    //判断当前点击屏幕的地方是否是软键盘:

        public boolean isShouldHideInput(View v, MotionEvent event) {

    if (v !=null && (vinstanceof EditText)) {

    int[] leftTop = {0,0 };

    v.getLocationInWindow(leftTop);

    int left = leftTop[0], top = leftTop[1], bottom = top + v.getHeight(), right = left

    + v.getWidth();

    if (event.getX() > left && event.getX() < right

    && event.getY() > top && event.getY() < bottom) {

    // 保留点击EditText的事件

                    return false;

    }else {

    return true;

    }

    }

    return false;

    }

    //覆写activity的点击事件的分发方法dispatchTouchEvent:

        @Override

        public boolean dispatchTouchEvent(MotionEvent ev) {

    if (ev.getAction() == MotionEvent.ACTION_DOWN) {

    View v = getCurrentFocus();

    if (isShouldHideInput(v, ev)) {

    if(hideInputMethod(this, v)) {

    return true;//隐藏键盘时,其他控件不响应点击事件==》注释则不拦截点击事件

                    }

    }

    }

    return super.dispatchTouchEvent(ev);

    }

    }

    3.新建WelcomeActivity.java

    public class WelcomeActivityextends BaseActivity {

    @BindView(R.id.tv_tips)

    TextViewtv_tips;

    public static int COUNT =3;

    public Handlerhandler =new Handler(){

    @Override

            public void handleMessage(@NonNull Message msg) {

    super.handleMessage(msg);

    switch (msg.what){

    case 0x01:

    tv_tips.setText(COUNT+"S后跳转");

    break;

    }

    }

    };

    @Override

        public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

    WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_welcome);

    ButterKnife.bind(this);

    //开始倒计时

            startCountdown();

    }

    //开始倒计时

        private void startCountdown(){

    COUNT =3;

    final Timer timer =new Timer();

    timer.schedule(new TimerTask() {

    @Override

                public void run() {

    if(COUNT >0){

    Message message = Message.obtain();

    message.what =0x01;

    handler.sendMessage(message);

    }else {

    Intent intent =new Intent();

    intent.setClass(WelcomeActivity.this, MainActivity.class);

    startActivity(intent);

    finish();

    timer.cancel();

    }

    COUNT--;

    }

    },2000,1000);

    }

    }

    4.新建activity_welcome.xml布局文件

    <?xml version="1.0" encoding="utf-8"?>

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

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:background="@mipmap/welcome">

            <TextView

            android:id="@+id/tv_tips"

            android:layout_width="wrap_content"

            android:layout_height="@dimen/dp_20"

            android:layout_alignParentRight="true"

            android:layout_margin="@dimen/dp_15"

            android:paddingLeft="@dimen/dp_5"

            android:paddingRight="@dimen/dp_5"

            android:text="3S后跳转"

            android:textColor="@color/_white" />

    </RelativeLayout>

    5.配置 AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>

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

      package="com.chai.welcome">

        <application

            android:allowBackup="true"

            android:icon="@mipmap/ic_launcher"

            android:label="@string/app_name"

            android:roundIcon="@mipmap/ic_launcher_round"

            android:supportsRtl="true"

            android:theme="@style/Theme.AppCompat.Light.NoActionBar">

            <!-- AppCompatActivity隐藏标题栏android:theme="@style/Theme.AppCompat.Light.NoActionBar"-->

    <!--有的手机进行http请求时会将http转为https请求,此处可以禁止转换

        并且需要在application中添加android:usesCleartextTraffic = "true"

    -->

            <uses-library android:name="org.apache.http.legacy" android:required="false"/>

            

            <activity android:name=".ui.WelcomeActivity"

                android:screenOrientation="portrait">

                    <intent-filter>

                        <action android:name="android.intent.action.MAIN"/>

                        <category android:name="android.intent.category.LAUNCHER"/>

                    </intent-filter>

                </activity>

                <activity android:name=".ui.LoginActivity"

                    android:screenOrientation="portrait"/>

                <activity

                    android:name=".MainActivity"

                    android:screenOrientation="portrait">

                </activity>

        </application>

    </manifest>

    6.在style.xml 中设置无主题样式 

    <style name="Theme.AppCompat.Light.NoActionBar">

        <item name="windowActionBar">false</item>

        <item name="windowNoTitle">true</item>

    </style>

    7.在color.xml中设置倒计时字体颜色样式

    <color name="_white">#FFFFFF</color>

    相关文章

      网友评论

          本文标题:2020-09-17 一 倒计时welcome页

          本文链接:https://www.haomeiwen.com/subject/pbilyktx.html