无法执行 ImageView imageView = new ImageView(this);

我写的瀑布流显示图片

每次执行到Log.e("error","101成功压缩图片")这句就没办法执行了,下面是我的代码

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;

public class MainActivity extends Activity implements Runnable{

private final int NUM_OF_PIC = 30;  //每次请求获取的图片数量
private  LinearLayout linearLayout1 = null;
private  LinearLayout linearLayout2 = null;
private  LinearLayout linearLayout3 = null;
private  View scrollView = null;
public static int USE_LINEAR_INTERVAL = 0;
public static int linearlayoutWidth;
private byte[][] picBytes = new byte[NUM_OF_PIC][];
private int numOfPic = 0;//已加载的图片数量
private int index = 0; 
public static int requestTime = 0;
private PictureArrayOfBytes picArray ;

private Handler mHandler = new Handler(){  
    public void handleMessage(Message msg) {  
        switch (msg.what) {  
        case 1:   
          try {
            Log.e("error","39");
            addBitmaps();
            Log.e("error","41");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            break;  
        }  
    };  
};



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    linearLayout1 = (LinearLayout)findViewById(R.id.main_linearlayout1);
    linearLayout2 = (LinearLayout)findViewById(R.id.main_linearlayout2);
    linearLayout3 = (LinearLayout)findViewById(R.id.main_linearlayout3);
    linearlayoutWidth =  (int)(getWindowManager().getDefaultDisplay().getWidth()/3);
    Log.e("error","creat: " + String.valueOf(linearlayoutWidth));

    scrollView = findViewById(R.id.scroll);
    Log.e("error","61");
    final Thread thread = new Thread(new MainActivity());
    Log.e("error","65");
    thread.start();
    Log.e("error","67");
    Log.e("info", "context: "+(context == null));
    scrollView.setOnTouchListener(new OnTouchListener() {  
        @Override  
        public boolean onTouch(View v, MotionEvent event) {  
            switch (event.getAction()) {  
                case MotionEvent.ACTION_DOWN :  
                    break;  
                case MotionEvent.ACTION_MOVE :  
                    index++;  
                    break;  
                default :  
                    break;  
            }  
            if (event.getAction() == MotionEvent.ACTION_UP &&  index > 0) {  
                index = 0;  
                View view = ((ScrollView) v).getChildAt(0);  
                if (view.getMeasuredHeight() <= v.getScrollY() + v.getHeight()) {  
                    //加载数据代码  
                    //每次加载30张图片,一共加载5次
                        if (numOfPic >= NUM_OF_PIC){
                            numOfPic = 0;
                            thread.start();
                        }
                }  
            }  
            return false;  
        }  
    });  
    Log.e("error","90");
}



private void addBitmaps() throws Exception{
     Log.e("error","87:开始加载图片");


    for (int i = 0; i < NUM_OF_PIC; i++){
        Log.e("error","将图片数据转换成bitmap");

        Bitmap bitmap = BitmapFactory.decodeByteArray(picBytes[i], 0, picBytes[i].length);
        Log.e("error","改编图片的大小");
        Bitmap bitmap2 = BitmapZoom.bitmapZoomByWidth(bitmap, 240); //压缩图片大小
        Log.e("error","101成功压缩图片");
        Log.e("info", "context: "+(context == null));
        ImageView imageView = new ImageView(this);
        Log.e("error","103");
        imageView.setImageBitmap(bitmap);
        Log.e("error","105");
        //根据图片的大小,为图片挖坑
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(bitmap2.getWidth(), bitmap2.getHeight());
        //将坑和图片对象联系起来
        Log.e("error","109");
        imageView.setLayoutParams(layoutParams);
        Log.e("error","111");
        //按照顺序加载图片
        switch (USE_LINEAR_INTERVAL) 
        {
            case 0:
                linearLayout1.addView(imageView);
                numOfPic++;
                break;
            case 1:
                linearLayout2.addView(imageView);
                numOfPic++;
                break;
            case 2:
                linearLayout3.addView(imageView);
                numOfPic++;
                break;
            default:
                break;
        }
        USE_LINEAR_INTERVAL++;
        USE_LINEAR_INTERVAL= USE_LINEAR_INTERVAL%3;
    }
}
@Override
public void run() {
    // TODO Auto-generated method stub
    try {
        requestTime++;
        picArray = new PictureArrayOfBytes(requestTime);
        picBytes = picArray.getPicByteArray();
        Message message = new Message();  
        message.what = 1;  
        Log.e("error","153");
        mHandler.sendMessage(message);  
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

下面是我的logcat中的信息:

06-07 15:08:39.146: D/dalvikvm(2418): GC_CONCURRENT freed 292K, 4% free 13039K/13511K, paused 6ms+6ms
06-07 15:08:46.238: E/error(2418): 153
06-07 15:08:46.238: E/error(2418): 39
06-07 15:08:46.238: E/error(2418): 87:开始加载图片
06-07 15:08:46.238: E/error(2418): 将图片数据转换成bitmap
06-07 15:08:46.315: D/dalvikvm(2418): GC_FOR_ALLOC freed 252K, 4% free 13084K/13575K, paused 76ms
06-07 15:08:46.315: I/dalvikvm-heap(2418): Grow heap (frag case) to 12.987MB for 160016-byte allocation
06-07 15:08:46.498: D/dalvikvm(2418): GC_FOR_ALLOC freed 06-07 15:08:46.498: E/error(2418): 改编图片的大小
06-07 15:08:46.566: D/dalvikvm(2418): GC_FOR_ALLOC freed 27K, 5% free 13214K/13767K, paused 66ms
06-07 15:08:46.575: I/dalvikvm-heap(2418): Grow heap (frag case) to 13.181MB for 230416-byte allocation
06-07 15:08:46.635: D/dalvikvm(2418): GC_FOR_ALLOC freed 0K, 5% free 13439K/14023K, paused 60ms
**06-07 15:08:46.645: E/error(2418): 101成功压缩图片
06-07 15:08:46.655: W/System.err(2418): java.lang.NullPointerException**
06-07 15:08:46.685: W/System.err(2418):at android.content.ContextWrapper.getResources(ContextWrapper.java:81)
06-07 15:08:46.685: W/System.err(2418): at android.view.View.(View.java:2696)
06-07 15:08:46.685: W/System.err(2418): at android.widget.ImageView.(ImageView.java:104)
06-07 15:08:46.685: W/System.err(2418): at com.example.mywaterfallversion2.MainActivity.addBitmaps(MainActivity.java:113)
06-07 15:08:46.685: W/System.err(2418): at com.example.mywaterfallversion2.MainActivity.access$0(MainActivity.java:101)
06-07 15:08:46.698: W/System.err(2418): at com.example.mywaterfallversion2.MainActivity$1.handleMessage(MainActivity.java:39)
06-07 15:08:46.698: W/System.err(2418): at android.os.Handler.dispatchMessage(Handler.java:99)
06-07 15:08:46.698: W/System.err(2418): at android.os.Looper.loop(Looper.java:137)
06-07 15:08:46.698: W/System.err(2418): at android.app.ActivityThread.main(ActivityThread.java:4424)
06-07 15:08:46.698: W/System.err(2418): at java.lang.reflect.Method.invokeNative(Native Method)
06-07 15:08:46.706: W/System.err(2418): at java.lang.reflect.Method.invoke(Method.java:511)
06-07 15:08:46.706: W/System.err(2418): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-07 15:08:46.706: W/System.err(2418): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-07 15:08:46.706: W/System.err(2418): at dalvik.system.NativeStart.main(Native Method)

0
suannai0314
鹳狸媛 楼主的这个问题解决了么?下边的答案能解决问题么?如果可以麻烦点击答案旁的√采纳哦~如果没有也可以将自己的答案贴上然后进行采纳的。
大约 6 年之前 回复

2个回答

你的context申明在哪里???

0

你的Context必须是一个Activity类型的Context引用.
换成ImageView imageView = new ImageView(MainActivitty.this);

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android滑屏导航
private void initViewPager() { advPager = (ViewPager) findViewById(R.id.adv_pager); List<View> advPics = new ArrayList<View>(); ImageView img1 = new ImageView(this); img1.setBackgroundResource(R.drawable.a1); advPics.add(img1); ImageView img2 = new ImageView(this); img2.setBackgroundResource(R.drawable.a2); advPics.add(img2); ImageView img3 = new ImageView(this); img3.setBackgroundResource(R.drawable.a3); advPics.add(img3); ImageView img4 = new ImageView(this); img4.setBackgroundResource(R.drawable.a4); advPics.add(img4);
代码中修改ImageView的高度和宽度
image_view.getLayoutParams().height = 20;rnrnrnrn必要时调用rnrnrnimage_view.requestLayout()rnrnrnrnhttp://stackoverflow.com/questions/3144940/set-imageview-width-and-height-programmatically
安卓开发中ImageView基本用法(总结)
关于ImageView,常有一些混淆。第1个混淆点:(1)background通常指的都是背景,而src指的是内容。(2)当使用src填入图片时,是按照图片大小直接填充,并不会进行拉伸。第2个混淆点:scaleType缩放类型设置:fitXY:对图像的横向与纵向进行独立缩放,使得该图片完全适应ImageView,但是图片的横纵比可能会发生改变fitStart:保持纵横比缩放图片,知道较长的边与Im...
android动态添加ImageView注意
ImageView image = new ImageView(mContext);nimage.setImageResource(R.drawable.image);   //不起作用nimage.setImageDrawable(getResources().getDrawable(R.drawable.imge)); //可用
ImageView设置了match_parent无法充满父布局解决方案
ImageView设置如下:<ImageViewn android:layout_width="match_parent"n android:layout_height="90dp"n android:src="@drawable/game_card_gray"/>却发现图片宽度怎么也填充不满,刚开始还以为是哪里设置了padding,排查后却没有,最后搜索一
Imageview设置宽高充满父容器(屏幕)
android:id="@+id/imageView"n        android:layout_width="match_parent"n        android:layout_height="warp_content"n        android:scaleType="fitXY"n       />nn只需加入在ImageView中加入这个代码即可android:s
设置ImageView的大小
imageView_menu = (ImageView) findViewById(R.id.imageView_menu); nLinearLayout.LayoutParams params = new LinearLayout.LayoutParams(500,n 300);nimageView_menu.setLayoutParams(params)...
ImageView剖析二—(示例详解ImageView属性的使用)
前面我们通过阅读ImageView的源码对ImageView和它的属性有了更深的认识,这一次我们通过实际应用 n来进一步理解他们: n首先我们找一张图(两种尺寸750*1334和1242*2208)放到对应(相近)的文件夹下面,mipamap各文件夹对应 n的手机分辨率: nldpi 320*240 nmdpi 480*320 nhdpi 800*480 nxhdpi 1280*720 nxxhdp
如何动态设置ImageView的宽高以及位置
方法1:nnpackage com.pic; n nimport android.app.Activity; nimport android.os.Bundle; nimport android.util.Log; nimport android.view.ViewGroup.LayoutParams; nimport android.widget.ImageView;
实现数据源为List<ImageView>的简单的ViewPage效果
实现如下的ViewPager效果 n一:明确ViewPager是高级控件,所以高级控件怎么来,viewPagar就怎么来 n①声明viewpager n②findViewById n③添加数据源 n④设置适配器 n⑤展示二:设计底部小圆,用shape设计 n①未点击的时候,小圆点为灰色,代码如下<shape xmlns:android="http://schemas.android.com/apk/
代码中设置ImageView大小
viewHolder.ivIcsl.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,n LinearLayout.LayoutParams.WRAP_CONTENT));n viewHolder.ivIcsl.setM
ImageView设置图片的三种方法及特点
最常见:rnrnImageView.setImageResource(R.drawable.icon);rnrn rnrn看下面这段话rnrnrnrnSets a drawable as the content of this ImageView.rnrnThis does Bitmap reading and decoding on the UI thread, which can cause
动态创建布局LinearLayout和ImageView
LinearLayout linearLayout = null;nLinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 150);nlayoutParams.setMargins(0,15,0,0);nLinearLayout.L
ImageView.setImageURI()方法 图片界面不更新问题解决方案
解决方法是使用setImageBitmap()的方式代替.
图像视图ImageView的应用实例
图像视图ImageView的应用实例 、图像视图ImageView的应用实例 图像视图ImageView的应用实例 图像视图ImageView的应用实例
ImageView不能全屏的问题
应用的开启的第一个页面是一个展示页面rnrn就是一张图片,全屏显示rnrn很奇怪无论我怎么设置都不全屏~rnrn[code=&quot;java&quot;]rnrnrn[/code]rnrnActivity中设置全屏也写了,没效果~rn[code=&quot;java&quot;]rngetWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowM...
动态的添加ImageView并居中显示
n n n Android 中动态添加控件,并设置居中和Margin:n其中DisplayUtil.dip2px()是为了适配。nSimpleDraweeView image = new SimpleDraweeView(getContext());nLayoutParams param = new LayoutParams(LayoutParams.WRAP_CON...
Android屏幕适配问题,ImageView在代码中设置宽高,以及使用LayoutParams的坑
今天做项目遇到了一个问题,一开始把RecycerView中每一Item的ImageView的高度写了一个固定的dp值,一个屏幕中出现四个,换了手机测试之后,一个屏幕出现了4个半,有的是5个,后来想下通过获取屏幕宽度的方式来适配吧。nn看一下这位老兄https://www.cnblogs.com/H-BolinBlog/p/6878469.htmlnn他写的这个方法:nnnpublic void g...
android studio 中使用ImageView控件出现问题了
android studio 中使用ImageView控件出现问题了,是这样的,我想在项目中使用图片,图片资源放在drawable目录下面,然后在布局文件中n        android:layout_height=&quot;wrap_content&quot;n        android:layout_width=&quot;wrap_content&quot;n        android:src=&quot;@drawabl
动态调整ImageView的尺寸(width 、height
在布局文件中设置高和宽为50dp。rnrnrnrn <ImageViewn android:id="@+id/right_btn"n android:layout_width="50dp"n android:layout_height="50dp"n android:layout_gravity=
Androidstudio imageview
imageview空间的使用,剪切图片显示圆角图片,使用anndroidstudio打开工程
ImageView图片不显示
今天写代码时,发现 ImageView 用 src 设置图片在部分手机不显示图片,下面是我的代码:nnn &amp;lt;ImageViewn android:id=&quot;@+id/iv_weChat&quot;n android:layout_width=&quot;match_parent&quot;n android:layout_height=&quot;45dp&quot;n andro...
ImageView充满屏幕
ImageView充满屏幕
imageView响应触摸事件
当imageview响应触摸事件时,SetOnTouchListen中的onClick方法要返回true,只有在同时具有点击事件的时候返回fauls.
ImageView控件的基本用法
ImageView主要是用来显示图片的控件,可以对图片进行放大、缩小和旋转的功能。nandroid:scaleType属性指定ImageView控件显示图片的方式,n例如:center表示图像以不缩放的方式显示在ImageView控件的中心,如果设置为fitCenter,表示图像按照比例缩放至合适的位置,并在ImageView控件的中心。
UI控件之显示图像控件ImageView(下)
(一)绘制最简单的圆形ImageView n n RoundedImageView CircleImageView运行效果: n实现代码:自定义ImageView代码:package com.example.android_drawable_xml;import android.content.Context;nimport android.graphics.Bitma
Android 自定义Imageview之RoundCornersImageView(实现圆角及圆形图片)
在实践中,有时候会用到圆形图片展示(个人头像展示)及圆角展示,其实Glide加载ImageView能够实现这些:nnGlide加载圆形图:nnnRequestOptions mRequestOptions = RequestOptions.circleCropTransform().diskCacheStrategy(DiskCacheStrategy.NONE)nn.skipMemoryCach...
Android 设置 ImageView 高度固定,宽度自适应
n n n 1. 需求背景n当很多时候,设计为了界面美观,都会设死图片的宽度或者高度,但是服务器返回的图片参差不齐,这时候就需要我们手动设置 ImageView 宽高了,通过 ImageView 的 android:adjustViewBounds=&quot;true&quot; 属性,我们能让设置让图片自适应显示。n2. 实现方式nn在 XML 中设置 ImageView 的相关...
自定义ImageView,实现圆角矩形、原型、固定宽高比样式
自定义ImageView,实现圆角矩形、原型、固定宽高比样式
Android studio菜鸟开发————ImageView
ImageView相当于一个盛放图片的的容器rn在xml写法如下:rnImageViewn android:id="@+id/imageId"n android:layout_width="wrap_content"n android:layout_height="wrap_content" n android:src="@drawable/ic_launcher_back
解决imageView加载图片时候造成内存溢出的问题
图片加载  出现内存溢出的问题很普遍  而且解决的方法五花八门 各有优劣rn主要是因为  imageView  在底层创建图片层的时候 会占用很大的内存空间rn尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource直接使用图片路径来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBit
ImageView加载图片 路径没问题,图片不显示
先说一下如何获得本地图片的路径。nn nnn//点击图片事件nib.setOnClickListener(new View.OnClickListener() {n @Overriden public void onClick(View view) {n getImageFromAlbum();n }n...
ImageView加载图片失败
Logcat报错误Error inflating class ImageView 。图片复制到drawable中时,系统默认自动放在了drawable-v24中,导致在低分辨率手机上无法找到图片而报错。nn
Android属性动画——ImageView(Robots)
一、效果图动画场景:该动画是在ImageView中显示,效果图中显示了三个动画:漂浮、左右招手,原动画是很流畅的,无丢帧,转成gif后大致能看出效果,不用在意卡顿。二、实现原理1.自定义Drawable,重写draw,根据onAnimationUpdate方法返回的动画进度,通过差值器计算出该帧drawable的状态,并绘制2.调用Drawable.invalidateSelf触发View的重绘三...
通过SimpleAdapter直接在ListView中显示图片
最近在做一个界面,想法是把一个目录中的图片显示在一个GridView控件中,做成类似n缩略图的效果。nnn我们知道GridView和ListView都是AbsListView的子类。实现GridView和ListView最关键n的步骤就是给它们设定Adapter。一般有三种方法:用ArrayAdapter,用SimpleAdapter,n或者自定义一个BaseAdapter的子类。由于
给ImageView设置标记,实现加载图片
public class Fragment2 extends Fragment {rn    private View view;rn    private ListView listView;rn    private int positon;rn    private String path;rn    Handler handler = new Handler() {rn        @S
ImageView 无法显示图片问题解决办法
今天简单地制作一个布局如下<?xml version="1.0" encoding="utf-8"?>n<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"n xmlns:tools="http://schemas.android.com/tools"n android:layout_width=
如何让imageView铺满屏幕?
如何控制控件的大小呢?  n 如何让imageView铺满屏幕呢?nn  昨天用相关布局试了好久,控件周围都和屏幕边缘无法完全融合,经由同学提醒,发现是布局的问题,选线性布局就没有这种问题啦。n <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"n android:layout_width=
关于imageview 点击事件
刚学IOS,自己做了个APP,但是imageView点击判断这卡不知道改怎么写,求大神给瞅瞅……代码见楼下……
解决LinearLayout或ImageView设置按下效果不起作用,无效果
解决LinearLayout、ImageView等控件按下效果不起作用,设置完不好用问题。
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 nlp执行师教程 nlp执行师价格