android - 异常 'android.graphics.drawable.RippleDrawable' ,从方法 android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering 引用

标签 android

我正在设计一个安卓应用。我的应用程序在 21 以上的 API 上运行良好,但当我开始在 API 18 上测试它时,不幸的是它停止了。在登录 Activity 应用程序开始时停止。不幸的是,当我在 Edittext 应用程序中输入时停止。 下面是我的代码。

    package com.example.kiran.kioskapp.activity;

import android.app.ProgressDialog;
import android.content.Intent;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.kiran.kioskapp.MyApplication;
import com.example.kiran.kioskapp.R;

import com.example.kiran.kioskapp.helper.Helper;
import com.example.kiran.kioskapp.helper.SessionManager;
import com.example.kiran.kioskapp.utils.APIUtils;
import com.example.kiran.kioskapp.data.remote.Webservice;
import com.example.kiran.kioskapp.service.ConnectivityReceiver;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class LoginActivity extends AppCompatActivity implements ConnectivityReceiver.ConnectivityReceiverListener {

    Button ibtnLogin;
    EditText iedtClientId, iedtDeviceCode;
    String strDeviceCode;
    long clientId;
    Helper helper;
    Webservice webservice;
    SessionManager sessionManager;
    Toolbar toolbar;
    ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        initToolbar();
        checkConnection();
        sessionManager = new SessionManager(LoginActivity.this);
        helper = new Helper(LoginActivity.this);
        webservice = APIUtils.getWebsevice(Webservice.class);
        //if already logged in then edirect to HomeActivity
        Log.d("TAG", "session " + sessionManager.isLoggedIn());
        iedtClientId = (EditText) findViewById(R.id.edt_clientid);
        iedtDeviceCode = (EditText) findViewById(R.id.edt_device_code);
        ibtnLogin = (Button) findViewById(R.id.btn_login);

        ibtnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (checkValidation()) {
                    clientId = Long.parseLong(iedtClientId.getText().toString().trim());
                    strDeviceCode = iedtDeviceCode.getText().toString().trim();
                    strDeviceCode = strDeviceCode.toUpperCase();
                    webservice.isAuthenticate(clientId, strDeviceCode).enqueue(new Callback<Boolean>() {
                        @Override
                        public void onResponse(Call<Boolean> call, Response<Boolean> response) {

                            if (response.code() == 200) {
                                ProgressDialog dialog = ProgressDialog.show(LoginActivity.this, getString(R.string.progess_title), getString(R.string.progess_message), false, false);
                                dialog.show();
                                sessionManager.createLoginSession(clientId, strDeviceCode);
                                Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
                                startActivity(intent);
                                finish();
                            } else
                                Helper.showCustomToast(LoginActivity.this, getString(R.string.wrong_credentials));
                        }

                        @Override
                        public void onFailure(Call<Boolean> call, Throwable t) {
                            Helper.showCustomToast(LoginActivity.this, getString(R.string.network_error));
                        }
                    });

                }//if checkvalidation()
            }

        });
    }


    public boolean checkValidation() {

        boolean valid = true;
        if (iedtClientId.getText().toString().trim().isEmpty()) {
            iedtClientId.setError(getString(R.string.client_error));
            valid = false;
        } else {
            iedtClientId.setError(null);
        }

        if (iedtDeviceCode.getText().toString().trim().isEmpty()) {
            iedtDeviceCode.setError(getString(R.string.device_error));
            valid = false;
        } else {
            iedtDeviceCode.setError(null);
        }
        return valid;
    }
    private void initToolbar() {
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("");//reset default title
        imageView = (ImageView) toolbar.findViewById(R.id.img_refresh);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


            }
        });
    }

    private void checkConnection() {
        boolean isConnected = ConnectivityReceiver.isConnected();
        showSnackBar(isConnected);
        if (isConnected == true) {
            String recName = ConnectivityReceiver.getConnectedWifiInfo();
            int level = ConnectivityReceiver.getLevel();
            Log.d("TAG", recName + " " + level);
        }

    }

    @Override
    protected void onResume() {
        super.onResume();
        MyApplication.getInstance().setConnectivityListener(this);

    }


    void showSnackBar(boolean value) {
        String message;
        if (value == true)
            message = "Good! Connected to Internet";
        else
            message = "Sorry! Not connected to internet";
        View mView = findViewById(android.R.id.content);
        Snackbar.make(mView, message, Snackbar.LENGTH_LONG)
                .show();
    }

    @Override
    public void onNetworkConnectionChanged(boolean isConnected) {
        showSnackBar(isConnected);
    }


}

它显示了各种异常情况。

 Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
10-31 00:18:57.991 2105-2105/com.example.kiran.kioskapp E/InputEventReceiver: Exception dispatching input event.
10-31 00:18:57.991 2105-2105/com.example.kiran.kioskapp E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
10-31 00:18:57.991 2105-2105/com.example.kiran.kioskapp E/MessageQueue-JNI: java.lang.IndexOutOfBoundsException
                                                                                at android.graphics.Paint.getTextRunAdvances(Paint.java:1777)
                                                                                at android.text.TextLine.handleText(TextLine.java:747)
                                                                                at android.text.TextLine.handleRun(TextLine.java:898)
                                                                                at android.text.TextLine.measureRun(TextLine.java:414)
                                                                                at android.text.TextLine.measure(TextLine.java:293)
                                                                                at android.text.Layout.getHorizontal(Layout.java:852)
                                                                                at android.text.Layout.getHorizontal(Layout.java:830)
                                                                                at android.text.Layout.getPrimaryHorizontal(Layout.java:805)
                                                                                at android.text.Layout.getPrimaryHorizontal(Layout.java:795)
                                                                                at android.text.Layout.getOffsetForHorizontal(Layout.java:1116)
                                                                                at android.widget.TextView.getOffsetAtCoordinate(TextView.java:8520)
                                                                                at android.widget.TextView.getOffsetForPosition(TextView.java:8496)
                                                                                at android.widget.Editor$SelectionModifierCursorController.onTouchEvent(Editor.java:3597)
                                                                                at android.widget.Editor.onTouchEvent(Editor.java:1017)
                                                                                at android.widget.TextView.onTouchEvent(TextView.java:7601)
                                                                                at android.view.View.dispatchTouchEvent(View.java:7384)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                                at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                                at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                                at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1966)
                                                                                at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1418)
                                                                                at android.app.Activity.dispatchTouchEvent(Activity.java:2424)
                                                                                at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
                                                                                at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
                                                                                at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1914)
                                                                                at android.view.View.dispatchPointerEvent(View.java:7564)
                                                                                at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3883)
                                                                                at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3778)
                                                                                at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
                                                                                at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
                                                                                at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
                                                                                at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483)
                                                                                at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
                                                                                at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540)
                                                                                at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
                                                                                at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
                                                                                at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
                                                                                at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
                                                                                at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
                                                                                at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5419)
                                                                                at android.view.ViewRootI
10-31 00:18:58.001 2105-2105/com.example.kiran.kioskapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                          java.lang.IndexOutOfBoundsException
                                                                              at android.graphics.Paint.getTextRunAdvances(Paint.java:1777)
                                                                              at android.text.TextLine.handleText(TextLine.java:747)
                                                                              at android.text.TextLine.handleRun(TextLine.java:898)
                                                                              at android.text.TextLine.measureRun(TextLine.java:414)
                                                                              at android.text.TextLine.measure(TextLine.java:293)
                                                                              at android.text.Layout.getHorizontal(Layout.java:852)
                                                                              at android.text.Layout.getHorizontal(Layout.java:830)
                                                                              at android.text.Layout.getPrimaryHorizontal(Layout.java:805)
                                                                              at android.text.Layout.getPrimaryHorizontal(Layout.java:795)
                                                                              at android.text.Layout.getOffsetForHorizontal(Layout.java:1116)
                                                                              at android.widget.TextView.getOffsetAtCoordinate(TextView.java:8520)
                                                                              at android.widget.TextView.getOffsetForPosition(TextView.java:8496)
                                                                              at android.widget.Editor$SelectionModifierCursorController.onTouchEvent(Editor.java:3597)
                                                                              at android.widget.Editor.onTouchEvent(Editor.java:1017)
                                                                              at android.widget.TextView.onTouchEvent(TextView.java:7601)
                                                                              at android.view.View.dispatchTouchEvent(View.java:7384)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                              at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
                                                                              at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1912)
                                                                              at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1966)
                                                                              at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1418)
                                                                              at android.app.Activity.dispatchTouchEvent(Activity.java:2424)
                                                                              at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
                                                                              at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
                                                                              at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1914)
                                                                              at android.view.View.dispatchPointerEvent(View.java:7564)
                                                                              at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3883)
                                                                              at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3778)
                                                                              at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
                                                                              at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
                                                                              at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
                                                                              at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483)
                                                                              at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
                                                                              at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540)
                                                                              at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
                                                                              at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
                                                                              at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
                                                                              at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
                                                                              at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
                                                                              at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5419)
                                                                            at an

                                                                          [ 10-31 00:18:58.011  1442: 1567 D/         ]
                                                                          HostConnection::get() New Host Connection established 0xb7d793f0, tid 1567

..

错误正是我没有得到的地方。请帮忙。

最佳答案

Try this , to check if Android Api version is above 19 then apply ripple effect else no ripple effect

private void setBackgrounds(){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
        {
            forgot.setBackgroundDrawable(getResources().getDrawable(R.drawable.tv_ripple));

        }

tv_ripple.xml

 <?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="#55000000"
    tools:targetApi="lollipop">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="#88000000" />
            <corners android:radius="5dp"/>
        </shape>
    </item>
</ripple>

关于android - 异常 'android.graphics.drawable.RippleDrawable' ,从方法 android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47027853/

相关文章:

安卓原生 "undeclared (first use in this function)"

Android 构建失败 - FormatException

android - 首次展示的Activity解决方案

java - 无法将 HttpURLConnection 方法切换为 POST

java - 在Android App中使用代码设置启动Activity

Android Systemproperties.set 不起作用

android - 在运行时从自定义 ViewGroup 中的 TextView 类型的子项获取 "getText()"

javascript - DOMAttrModified 事件监听器未在 Android WebView 中触发

android - 我怎样才能显示一个中间有加号的空 ImageView

Android PagerAdapter 不调用 instantiateItem