从获取图像视图绘制对象 [英] Get Drawable from image view

查看:162
本文介绍了从获取图像视图绘制对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我做这说明<素材绘制的例子/一>文件ImageView.getDrawable总是返回null。任何人都可以请帮我吗?

在MainActivity.java的onCreate

  @覆盖
    保护无效的onCreate(捆绑savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);        ImageView的ImageView的=(ImageView的)findViewById(R.id.image);
        ClipDrawable绘制=(ClipDrawable)imageview.getDrawable();
        drawable.setLevel(drawable.getLevel()+ 1000); //行号21
    }

logcat的

 十二月2日至四日:16:31.156:E / AndroidRuntime(4611):致命异常:main02-04 12:16:31.156:E / AndroidRuntime(4611):java.lang中.RuntimeException:无法启动活动ComponentInfo {com.example.test / com.example.test.MainActivity}:显示java.lang.NullPointerException十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在android.os.Handler.dispatchMessage(Handler.java:99)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在android.os.Looper.loop(Looper.java:123)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在android.app.ActivityThread.main(ActivityThread.java:3683)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在java.lang.reflect.Method.invokeNative(本机方法)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在java.lang.reflect.Method.invoke(Method.java:507)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在dalvik.system.NativeStart.main(本机方法)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):因:显示java.lang.NullPointerException十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在com.example.test.MainActivity.onCreate(MainActivity.java:21)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)十二月2日至四日:16:31.156:E / AndroidRuntime(4611):11 ...更多


您必须覆盖onWindowsFocusChanged()

  @覆盖
 公共无效onWindowFocusChanged(布尔hasWindowFocus){
    super.onWindowFocusChanged(hasWindowFocus);
   ClipDrawable绘制=(ClipDrawable)imageview.getBackground();
    drawable.setLevel(drawable.getLevel()+ 1000); //行号21
 }

在ImageView的尚未正确,当你试图获取其值(绘制的图像)显示。
onWindowsFocusChanged()将通知视图已经被加载已经这就是你可以得到它的数据的时间用户。

When I do the clip drawable example described in this document ImageView.getDrawable always return null. Can anyone pls help me?

In MainActivity.java onCreate

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView imageview = (ImageView) findViewById(R.id.image);
        ClipDrawable drawable = (ClipDrawable) imageview.getDrawable();
        drawable.setLevel(drawable.getLevel() + 1000); //Line number 21
    }

Logcat

 02-04 12:16:31.156: E/AndroidRuntime(4611): FATAL EXCEPTION: main02-04 12:16:31.156: E/AndroidRuntime(4611): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: java.lang.NullPointerException

02-04 12:16:31.156: E/AndroidRuntime(4611):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at android.app.ActivityThread.access$1500(ActivityThread.java:117)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at android.os.Handler.dispatchMessage(Handler.java:99)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at android.os.Looper.loop(Looper.java:123)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at android.app.ActivityThread.main(ActivityThread.java:3683)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at java.lang.reflect.Method.invokeNative(Native Method)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at java.lang.reflect.Method.invoke(Method.java:507)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at dalvik.system.NativeStart.main(Native Method)

02-04 12:16:31.156: E/AndroidRuntime(4611): Caused by: java.lang.NullPointerException

02-04 12:16:31.156: E/AndroidRuntime(4611):      at com.example.test.MainActivity.onCreate(MainActivity.java:21)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

02-04 12:16:31.156: E/AndroidRuntime(4611):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

02-04 12:16:31.156: E/AndroidRuntime(4611):      ... 11 more

解决方案

You have to override onWindowsFocusChanged()

 @Override
 public void onWindowFocusChanged(boolean hasWindowFocus) {
    super.onWindowFocusChanged(hasWindowFocus);
   ClipDrawable drawable = (ClipDrawable) imageview.getBackground();
    drawable.setLevel(drawable.getLevel() + 1000); //Line number 21
 }

the imageView was not yet displayed properly when you tried to get its value(drawable image). onWindowsFocusChanged() will inform the user that the view has been loaded already that's the time you can get its data.

这篇关于从获取图像视图绘制对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆