无法从Android中的位图生成纹理

时间:2013-03-01 20:28:54

标签: android bitmap

我目前正在开发一个Android应用程序,直到现在我使用eclipse android模拟器进行测试。

今天我决定在我的手机上尝试一下(小米mi2)但是当我吃午饭时(通过USB调试)我遇到了2个问题:

  1. 我有一张背景图片,模拟器显示完美,但它没有出现在我的手机上 - 显示黑色背景。

  2. 也许这是前一个问题,LogCat显示了一些错误:

  3. 03-01 22:18:35.599: E/OpenGLRenderer(1109): Cannot generate texture from bitmap 03-01 22:18:35.629: E/SpannableStringBuilder(1109): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

    活动代码:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="480dip"
    android:layout_marginTop="10dip"
    android:background="@drawable/bg">
    <EditText
        android:id="@+id/eu_un"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:hint="@string/enter_user_name" >
    </EditText>
    
    <EditText
        android:id="@+id/eu_pw"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/eu_un"
        android:ems="10"
        android:hint="@string/enter_password"
        android:inputType="textPassword|textPersonName" />
    
    <Button
        android:id="@+id/nu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="134dp"
        android:text="@string/signup" />
    
    <Button
        android:id="@+id/eu_signin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/eu_pw"
        android:layout_centerHorizontal="true"
        android:text="@string/login" />
    
    <Button
        android:id="@+id/exit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/eu_signin"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="61dp"
        android:text="@string/exit" />
    
    </RelativeLayout>
    

    Java代码:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        un = (EditText) findViewById(R.id.eu_un);
        pw = (EditText) findViewById(R.id.eu_pw);
        nu = (Button) findViewById(R.id.nu);
        eu = (Button) findViewById(R.id.eu_signin);
        exit = (Button) findViewById(R.id.exit);
        ma = this;
    
        nu.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                newUser();
            }
        });
    

3 个答案:

答案 0 :(得分:1)

这是一个奇怪的错误。我做了一些搜索,发现一些类似的帖子,似乎暗示它与设备的键盘设置有关:

Android - SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

Nexus 7 error "SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length"

他们中的大多数都有问题中的特定电话。

SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length error whenever an editText becomes empty

如果你搜索

还有更多

http://www.google.com/search?client=safari&rls=en&q=SPAN_EXCLUSIVE_EXCLUSIVE+spans+cannot+have+a+zero+length&ie=UTF-8&oe=UTF-8

我知道这并没有提供你所希望的答案 - 但理想情况下它会让你朝着正确的方向前进。

答案 1 :(得分:0)

我也在genymotion API 16 +上遇到了这个模拟设备的错误。

我的问题的解决方案是用gng图像替换gif图像。

感谢http://www.pedrorainho.eu/eopenglrenderer2268-cannot-generate-texture-from-bitmap/

答案 2 :(得分:-1)

我在使用Android L版本的nexus5中遇到了同样的错误。 就我而言,我评论了两行来修复它。 ( // opt.inPurgeable = true; // opt.inInputShareable = true; ) 希望对你有用。 祝你好运!

下面是我的代码:

ImageView image = (ImageView) findViewById(R.id.imageView);
        BitmapFactory.Options opt = new BitmapFactory.Options();
        opt.inPreferredConfig = Bitmap.Config.RGB_565;
//        opt.inPurgeable = true;
//        opt.inInputShareable = true;
        
        InputStream is = getResources().openRawResource(R.raw.error_nothing_app);
        Bitmap bitmap = BitmapFactory.decodeStream(is, null, opt);
        is.close();
        BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap);
        image.setImageDrawable(drawable);