与其他应用相比,我的基本活动很慢

时间:2019-07-12 22:41:18

标签: android

我创建了一个应用,它只是一项基本活动,而一个空白活动。主要活动没有内容,但是当您单击更多选项(3个垂直点)时,它并不敏捷,单击延迟和动画延迟。但是Google Play上的其他应用程序是如此快速且灵活。我使用真实的设备尝试我的应用。我会尽快发布视频

这是主要的content.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:showIn="@layout/activity_main"
    android:orientation="vertical">

</LinearLayout>
    <!--app:layout_behavior="@string/appbar_scrolling_view_behavior"-->

这是MainActivity.java

package com.example.basicreminder;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends AppCompatActivity  {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        toolbar.setSubtitle("25 Reminders");
        setSupportActionBar(toolbar);



    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);

        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }else if(id == R.id.action_new_reminder){
            Intent intent = new Intent(this,NewReminder.class);
            startActivity(intent);

        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

    }

}

activity_new_reminder.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/spinner_repeat"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="8dp"
    tools:context=".NewReminder">


    <EditText
        android:id="@+id/NewReminder_editText_remindMeTo"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:hint="@string/editText_hint_remindMeTo"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/NewReminder_editText_time"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:focusable="false"
        android:hint="@string/editText_hint_time"
        android:inputType="time"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/NewReminder_editText_remindMeTo" />

    <EditText
        android:id="@+id/NewReminder_editText_date"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:focusable="false"
        android:hint="@string/editText_hint_date"
        android:inputType="date"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/NewReminder_editText_time" />


    <Spinner
        android:id="@+id/NewReminder_spinner_repeat"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:entries="@array/repeat_arrays"
        android:scrollbarSize="8dp"
        android:spinnerMode="dialog"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/NewReminder_editText_date" />


    <EditText
        android:id="@+id/NewReminder_editText_customRepeat"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:visibility="gone"
        app:layout_constraintEnd_toStartOf="@+id/NewReminder_spinner_customRepeat"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/NewReminder_spinner_repeat" />

    <Spinner
        android:id="@+id/NewReminder_spinner_customRepeat"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:visibility="gone"
        android:entries="@array/custom_repeat_arrays"
        android:spinnerMode="dialog"
        app:layout_constraintBottom_toBottomOf="@+id/NewReminder_editText_customRepeat"
        app:layout_constraintEnd_toEndOf="parent" />


    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="CheckBox"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/NewReminder_editText_customRepeat" />

    <CheckBox
        android:id="@+id/checkBox2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="CheckBox"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/checkBox" />

    <CheckBox
        android:id="@+id/checkBox3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="CheckBox"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/checkBox2" />

    <CheckBox
        android:id="@+id/checkBox4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="CheckBox"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/checkBox3" />

    <CheckBox
        android:id="@+id/checkBox5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="CheckBox"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/checkBox4" />

    <CheckBox
        android:id="@+id/checkBox6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="CheckBox"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/checkBox5" />

    <CheckBox
        android:id="@+id/checkBox7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="CheckBox"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/checkBox6" />

    <Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="@string/button_label_saveReminder"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/NewReminder_button_ringtone" />

    <Button
        android:id="@+id/NewReminder_button_ringtone"
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:drawableStart="@drawable/ic_button_ringtone"
        android:text="Button"
        android:textAlignment="textStart"
        android:textAllCaps="false"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/checkBox7" />
</android.support.constraint.ConstraintLayout>

NewReminder.java

package com.example.basicreminder;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TimePicker;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

public class NewReminder extends AppCompatActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new_reminder);
        Calendar myCalendar = Calendar.getInstance();

        EditText editText_remindMeTo = findViewById(R.id.NewReminder_editText_remindMeTo);
        EditText editText_time = findViewById(R.id.NewReminder_editText_time);
        EditText editText_date = findViewById(R.id.NewReminder_editText_date);
        EditText editText_customRepeat = findViewById(R.id.NewReminder_editText_customRepeat);

        Spinner spinner_repeat = findViewById(R.id.NewReminder_spinner_repeat);
        Spinner spinner_customRepeat = findViewById(R.id.NewReminder_spinner_customRepeat);

        Button button_ringtone = findViewById(R.id.NewReminder_button_ringtone);

        TimePicker(editText_time,myCalendar);
        DatePicker(editText_date,myCalendar);
        SpinnerRepeat(spinner_repeat, spinner_customRepeat, editText_customRepeat);
        SetAlarmRingtone(button_ringtone);

    }
    public void TimePicker(final EditText editText,final Calendar calendar){
        editText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                int hour = calendar.get(Calendar.HOUR_OF_DAY);
                int minute = calendar.get(Calendar.MINUTE);
                TimePickerDialog timePickerDialog = new TimePickerDialog(NewReminder.this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

                        String myFormat = "hh:mm a";
                        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
                        editText.setText(sdf.format(calendar.getTime()));

                    }
                },hour,minute,false);
                timePickerDialog.show();
            }
        });
    }
    public void DatePicker(final EditText editText,final Calendar calendar){
        editText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int month = calendar.get(Calendar.MONTH);
                int day = calendar.get(Calendar.DAY_OF_MONTH);
                int year = calendar.get(Calendar.YEAR);
                DatePickerDialog datePickerDialog = new DatePickerDialog(NewReminder.this,new DatePickerDialog.OnDateSetListener(){
                    @Override
                    public  void onDateSet(DatePicker view, int month, int day,int year){
                        String myFormat = "MMM dd, YYYY";
                        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
                        editText.setText(sdf.format(calendar.getTime()));
                    }
                } ,month,day,year);
                datePickerDialog.show();
            }
        });
    }
    public void SpinnerRepeat(Spinner spinner1,final Spinner spinner2, final EditText editText){
        spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id){

                String selectedItem = parentView.getItemAtPosition(position).toString();
                if (!selectedItem.equals("Custom")){
                    //Hides the Custom Repeat Fields
                    spinner2.setVisibility(View.GONE);
                    editText.setVisibility(View.GONE);
                }else {
                    //Shows the Custom Repeat Fields
                    spinner2.setVisibility(View.VISIBLE);
                    editText.setVisibility(View.VISIBLE);
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> parentView){

            }
        });
    }
    public void SetAlarmRingtone(final Button button){

        Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
        final Ringtone ringtone = RingtoneManager.getRingtone(getBaseContext(),uri);
        button.setText(ringtone.getTitle(getBaseContext()));
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

               ringtone.play();
            }
        });
    }

}

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.basicreminder">

    <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/AppTheme">
        <activity
            android:name=".NewReminder"
            android:label="New Reminder"
            android:parentActivityName=".MainActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.basicreminder.MainActivity"/>
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

gradle(module:app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.basicreminder"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:design:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

1 个答案:

答案 0 :(得分:0)

我的天哪!!!我找到了答案!我以为不是,但是我之前看过一篇文章,我想在这里,他说他发现android studio中的字体正在加载所有字体,但是他只想要轻便的灯光,或者该应用程序需要花一些时间加载所有字体字体。抱歉,这很难解释,但我现在解决了。因此,现在我将字体更改为OpenSans Light,并且将其字体资源中的字体更改为仅一种,并且现在不会出现滞后现象。谢谢