为什么ImageView中显示不了位图文件?

iceli 2014-03-11 10:22:23
布局文件test_bitmap.xml,添加两个ImageView组件来显示图标,其中第一个直接引用g1.jpg,第二个在java中进行设置。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#000000"
>

<TextView
android:text="测试位图资源"
android:id="@+id/bitmapTextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>

<ImageView
android:id="@+id/bitmapImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/g1"></ImageView>

<ImageView
android:id="@+id/bitmapImageView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></ImageView>

</LinearLayout>

创建TestBitmapActivity类
package com.amaker.ch03_resource.drawable;

import android.app.Activity;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;

public class TestBitmapActivity extends Activity {
private ImageView myImageView;

public void onCreat(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.test_bitmap);
myImageView=(ImageView)findViewById(R.id.bitmapImageView02);
Resources r=getResources();
Drawable d=r.getDrawable(R.drawable.moto);
myImageView.setImageDrawable(d);
}

}

没有错误,但是位图文件不显示,窗口是空白的。本人刚学android,请问是什么原因?
...全文
323 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceli 2014-03-12
  • 打赏
  • 举报
回复
重新建了工程,把之前的核心代码粘贴进去就ok了。以前是用了以前的工程,只改了src和layout下面的文件。下面是改后的代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".TestBitmapActivity" >

    <TableLayout         
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TableRow android:gravity="center_horizontal">
        <TextView 
        android:text="测试位图资源"
        android:id="@+id/bitmapTextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></TextView>
       </TableRow>

    <TableRow android:gravity="center_horizontal">
    <ImageView 
        android:id="@+id/bitmapImageView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/g1"></ImageView>
     </TableRow>
    
    <TableRow android:gravity="center_horizontal">
     <ImageView
        android:id="@+id/bitmapImageView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></ImageView>
     </TableRow>
     </TableLayout>

</RelativeLayout>
package com.amaker.ch03_drawable;

import com.amaker.ch03_drawable.R;

import android.os.Bundle;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.Menu;
import android.widget.ImageView;

public class TestBitmapActivity extends Activity {
	private ImageView myImageView=null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_test_bitmap);
		myImageView=(ImageView)this.findViewById(R.id.bitmapImageView02);
		//Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.moto);
	    //myImageView.setImageResource(R.drawable.moto);
		Resources r=getResources();
		Drawable d=r.getDrawable(R.drawable.moto);
		if(null==d)
			Log.d("drawable is null", null);
		myImageView.setImageDrawable(d);
	}

}
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 2 楼 afairycell 的回复:
是不是图片的问题??
换过图片,还是不行。不知道这个图片有什么要求?
afairycell 2014-03-11
  • 打赏
  • 举报
回复
是不是图片的问题??
afairycell 2014-03-11
  • 打赏
  • 举报
回复
布局写了啥?
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 22 楼 u010119353 的回复:
[quote=引用 20 楼 woaili03019 的回复:] [quote=引用 19 楼 u010119353 的回复:] [quote=引用 18 楼 woaili03019 的回复:] [quote=引用 13 楼 u010119353 的回复:] Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.moto); myImageView.setImageBitmap(bitmap);
还是空白,没有图片显示。[/quote] 你的moto是什么格式的?bmp?[/quote]moto是jpg格式的,g1是png格式的。[/quote] 不应该有没问题的啊,你把private ImageView myImageView;改成private ImageView myImageView=null;试试[/quote]还是没显示
milo_c 2014-03-11
  • 打赏
  • 举报
回复
引用 20 楼 woaili03019 的回复:
[quote=引用 19 楼 u010119353 的回复:] [quote=引用 18 楼 woaili03019 的回复:] [quote=引用 13 楼 u010119353 的回复:] Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.moto); myImageView.setImageBitmap(bitmap);
还是空白,没有图片显示。[/quote] 你的moto是什么格式的?bmp?[/quote]moto是jpg格式的,g1是png格式的。[/quote] 不应该有没问题的啊,你把private ImageView myImageView;改成private ImageView myImageView=null;试试
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 17 楼 mujunfengplay 的回复:
引用 16 楼 woaili03019 的回复:
[quote=引用 15 楼 woaili03019 的回复:] [quote=引用 14 楼 mujunfengplay 的回复:] [quote=引用 11 楼 woaili03019 的回复:] [quote=引用 9 楼 mujunfengplay 的回复:] 我估计你上面的图片太大了 下面的显示不出来
一张图片都没显示,是空白的。
你可以看下你那个Drawable对象是不是为null,还有看下你启动的是不是这个activity [/quote]
 <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.amaker.ch03.xml.TextXmlActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
是调用的这个activity,怎么看drawable对象是不是为空?[/quote] 晕,粘错了
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.amaker.ch03_resource.drawable.TestBitmapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
[/quote] 判断下打印就知道了撒[/quote]
		Drawable d=r.getDrawable(R.drawable.moto);
		if(null==d)
			Log.d("drawable is null", null);
		myImageView.setImageDrawable(d);
加了打印,logcat.txt没有。
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 19 楼 u010119353 的回复:
[quote=引用 18 楼 woaili03019 的回复:] [quote=引用 13 楼 u010119353 的回复:] Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.moto); myImageView.setImageBitmap(bitmap);
还是空白,没有图片显示。[/quote] 你的moto是什么格式的?bmp?[/quote]moto是jpg格式的,g1是png格式的。
milo_c 2014-03-11
  • 打赏
  • 举报
回复
引用 18 楼 woaili03019 的回复:
[quote=引用 13 楼 u010119353 的回复:] Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.moto); myImageView.setImageBitmap(bitmap);
还是空白,没有图片显示。[/quote] 你的moto是什么格式的?bmp?
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 13 楼 u010119353 的回复:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.moto); myImageView.setImageBitmap(bitmap);
还是空白,没有图片显示。
西瓜米 2014-03-11
  • 打赏
  • 举报
回复
引用 16 楼 woaili03019 的回复:
引用 15 楼 woaili03019 的回复:
[quote=引用 14 楼 mujunfengplay 的回复:] [quote=引用 11 楼 woaili03019 的回复:] [quote=引用 9 楼 mujunfengplay 的回复:] 我估计你上面的图片太大了 下面的显示不出来
一张图片都没显示,是空白的。
你可以看下你那个Drawable对象是不是为null,还有看下你启动的是不是这个activity [/quote]
 <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.amaker.ch03.xml.TextXmlActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
是调用的这个activity,怎么看drawable对象是不是为空?[/quote] 晕,粘错了
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.amaker.ch03_resource.drawable.TestBitmapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
[/quote] 判断下打印就知道了撒
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 15 楼 woaili03019 的回复:
引用 14 楼 mujunfengplay 的回复:
[quote=引用 11 楼 woaili03019 的回复:] [quote=引用 9 楼 mujunfengplay 的回复:] 我估计你上面的图片太大了 下面的显示不出来
一张图片都没显示,是空白的。
你可以看下你那个Drawable对象是不是为null,还有看下你启动的是不是这个activity [/quote]
 <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.amaker.ch03.xml.TextXmlActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
是调用的这个activity,怎么看drawable对象是不是为空?[/quote] 晕,粘错了
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.amaker.ch03_resource.drawable.TestBitmapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 14 楼 mujunfengplay 的回复:
引用 11 楼 woaili03019 的回复:
[quote=引用 9 楼 mujunfengplay 的回复:] 我估计你上面的图片太大了 下面的显示不出来
一张图片都没显示,是空白的。
你可以看下你那个Drawable对象是不是为null,还有看下你启动的是不是这个activity [/quote]
 <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.amaker.ch03.xml.TextXmlActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
是调用的这个activity,怎么看drawable对象是不是为空?
西瓜米 2014-03-11
  • 打赏
  • 举报
回复
引用 11 楼 woaili03019 的回复:
引用 9 楼 mujunfengplay 的回复:
我估计你上面的图片太大了 下面的显示不出来
一张图片都没显示,是空白的。
你可以看下你那个Drawable对象是不是为null,还有看下你启动的是不是这个activity
milo_c 2014-03-11
  • 打赏
  • 举报
回复
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.moto); myImageView.setImageBitmap(bitmap);
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 10 楼 afairycell 的回复:
试试ICO?
不知
iceli 2014-03-11
  • 打赏
  • 举报
回复
引用 9 楼 mujunfengplay 的回复:
我估计你上面的图片太大了 下面的显示不出来
一张图片都没显示,是空白的。
afairycell 2014-03-11
  • 打赏
  • 举报
回复
试试ICO?
西瓜米 2014-03-11
  • 打赏
  • 举报
回复
我估计你上面的图片太大了 下面的显示不出来
哎,真难 2014-03-11
  • 打赏
  • 举报
回复
写错了,应该是imageview.setBitmap吧,语法就有错误
加载更多回复(4)
这个可以实现ImageView异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画。解决了:1. listview加载oom问题 2. listview加载时卡顿的现象 3. listview加载时item图片重复错位等情况 可以配置: 1. 设置加载图片的最大尺寸 2. 设置默认图片的显示 3. 设置图片位图模式 4. 设置内存缓存的最大值。 5. 文件缓存保存的目录   这个框架基本的代码是很久以前不知道哪里弄的,零零碎碎的,现在已经优化了很多,所以现在上传到github上共享。   讲讲使用方式吧:   首先使用前下载源码或者jar包(见github:https://github.com/wangjiegulu/ImageLoaderSample) 然后进行图片加载器(ImageLoader)的配置和初始化,推荐的方法如下: 新建MyApplication类,继承Application,在onCreate增加如下代码:/**  * Created with IntelliJ IDEA.  * Author: wangjie  email:tiantian.china.2@gmail.com  * Date: 14-2-27  * Time: 上午11:25  */ public class MyApplication extends Application{     @Override     public void onCreate() {         super.onCreate();         ImageLoader.init(getApplicationContext(),                 new CacheConfig()                     .setDefRequiredSize(600) // 设置默认的加载图片尺寸(表示宽高任一不超过该值,默认是70px)                     .setDefaultResId(R.drawable.ic_launcher) // 设置显示的默认图片(默认是0,即空白图片)                     .setBitmapConfig(Bitmap.Config.ARGB_8888) // 设置图片位图模式(默认是Bitmap.CacheConfig.ARGB_8888)                     .setMemoryCachelimit(Runtime.getRuntime().maxMemory() / 3) // 设置图片内存缓存大小(默认是Runtime.getRuntime().maxMemory() / 4) //                  .setFileCachePath(Environment.getExternalStorageDirectory().toString()   "/mycache") // 设置文件缓存保存目录         );     }     …… }然后再AndroidManifest.xml添加:......到此,配置已经全部完成:接下来,使用ImageLoader来加载图片:holder.progress.setText("0%");     holder.progress.setVisibility(View.VISIBLE);     final ViewHolder vhr = holder;     ImageLoader.getInstances().displayImage(list.get(position), holder.image, new ImageLoader.OnImageLoaderListener() {         @Override         public void onProgressImageLoader(ImageView imageView, int currentSize, int totalSize) {             vhr.progress.setText(currentSize * 100 / totalSize   "%");         }         @Override         public void onFinishedImageLoader(ImageView imageView, Bitmap bitmap) {             vhr.progress.setVisibility(View.GONE);         }     });     或者:     ImageLoader.getInstances().displayImage(url, imageIv);     或者     ImageLoader.getInstances().displayImage(url, imageIv, 100);备注:例子,用到了一部分注解(与ImageLoader功能无关,但是可以简化代码的编写) 可以点下面连接进入:github:https://github.com/wangjiegulu/androidInject博客:http://www.cnblogs.com/tiantianbyconan/p/3459139.htmlhttp://www.cnblogs.com/tiantianbyconan/p/3540427.html

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧