方案如下:

我有一个活动RunTrainingWorkoutsView,它使用XML布局_run_workout.xml_,其中一些标签由CountDownTimer更新.工作正常…

现在,除了每秒通过onTick()CountDownTimer对象的回调方法更新的标签,我想在我的_run_workout.xml layout_中添加一个自定义表面视图,它将绘制一些每秒由同一onTick()方法更新的弧. .

我的run_workout.xml:

android:id="@+id/counter_clock_surface"

android:layout_width="300dp"

android:layout_height="240dp">

我的自定义View扩展了surfaceView

public class CounterClockView extends SurfaceView {

Paint paint = new Paint();

Paint paint2 = new Paint();

final RectF rect = new RectF();

final RectF rect2 = new RectF();

int counterArcAngle = 15;

//constructor

public CounterClockView(Context context, AttributeSet attributeSet) {

super(context);

//setting some paint properties...

this.setBackgroundColor(Color.TRANSPARENT);

}

@Override

public void onDraw(Canvas canvas) {

rect.set(50, 50, 150, 150);

rect2.set(50, 50, 150, 150);

this.layout(0, 0, 200, 200);

canvas.drawArc(rect, -90, 360, false, paint);

canvas.drawArc(rect2, -90, counterArcAngle, false, paint2);

}

扩展活动的主要类是使用以下代码在布局中获取对自定义surfaceView的引用:

//counterClockView is declared outside of onCreate() as CounterClockView counterClockView;

//later in onCreate(){....

counterClockView = (CounterClockView) findViewById(R.id.counter_clock_surface);

问题是改变customView对象的成员变量的值(counterClockView)

counterClockView.counterArcAngle = 10;

将崩溃应用程序…

另外,从我的主要活动开始,我想调用invalidate()方法在更改counterArcAngle值后重做表面视图,但这会导致应用程序崩溃…

为什么不能创建counterClockView对象并将其引用到相同类型的xml布局元素并更改其外观,使其无效等?

编辑LogCat:

threadid=1: thread exiting with uncaught exception (group=0x40015560)

ERROR/AndroidRuntime(487): FATAL EXCEPTION: main

ERROR/AndroidRuntime(487): java.lang.RuntimeException: Unable to start activity ComponentInfo{training.timer/training.timer.RunTrainingWorkoutsView}: java.lang.NullPointerException

ERROR/AndroidRuntime(487): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)

ERROR/AndroidRuntime(487): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)

ERROR/AndroidRuntime(487): at android.app.ActivityThread.access$1500(ActivityThread.java:117)

ERROR/AndroidRuntime(487): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)

ERROR/AndroidRuntime(487): at android.os.Handler.dispatchMessage(Handler.java:99)

ERROR/AndroidRuntime(487): at android.os.Looper.loop(Looper.java:123)

ERROR/AndroidRuntime(487): at android.app.ActivityThread.main(ActivityThread.java:3683)

ERROR/AndroidRuntime(487): at java.lang.reflect.Method.invokeNative(Native Method)

ERROR/AndroidRuntime(487): at java.lang.reflect.Method.invoke(Method.java:507)

ERROR/AndroidRuntime(487): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)

ERROR/AndroidRuntime(487): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)

ERROR/AndroidRuntime(487): at dalvik.system.NativeStart.main(Native Method)

ERROR/AndroidRuntime(487): Caused by: java.lang.NullPointerException

ERROR/AndroidRuntime(487): at training.timer.RunTrainingWorkoutsView.onCreate(RunTrainingWorkoutsView.java:72)

ERROR/AndroidRuntime(487): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

ERROR/AndroidRuntime(487): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

ERROR/AndroidRuntime(487): ... 11 more

解决方法:

经过3天的攻击,我的头靠在墙上,谷歌搜索,stacOverflowing等我得到了它.

实际上,这是一个愚蠢的小事……

我的XML文件,我定义了包含一些常见的android视图(即textView和按钮)的布局和我的自定义视图CounterClockView:

android:id="@+id/counter_clock_surface"

android:layout_width="300dp"

android:layout_height="240dp">

我必须增加一条线!

xmlns:android="http://schemas.android.com/apk/res/android" !!!

android:id="@+id/counter_clock_surface"

android:layout_width="300dp"

android:layout_height="240dp">

我不知道为什么这个命名空间行产生了如此巨大的差异,但它的效果很好!

现在,我可以在CountDownTimer()的每个onTick()上从我的主要活动更新我的自定义视图…

标签:android,android-layout,surfaceview

来源: https://codeday.me/bug/20191003/1846023.html

android自定义视图添加布局文件,android – 添加自定义视图作为XML布局的视图相关推荐

  1. android中的xml布局文件如何引用另一个xml布局文件,引用另一个layout.xml文件而不复制它...

    如果我理解正确提问者对XLARGE和SW-600dp的一个布局文件,另一个用于所有的休息.无论如何,当我偶然发现这个问题时,就是这样. 可以通过创建文件夹layout-xlarge和layout-s6 ...

  2. android 将app添加进入文件的打开方式

    今天,简单讲讲android里如何将自己的app添加进入文件的打开方式. 最近因为换租房的原因,状态很不好.今天尝试写点android的代码的内容.其实很简单,我们只需在AndroidManifest ...

  3. java数字时钟代码,Android自定义数字时钟代码,android自定义时钟,package jp.t

    Android自定义数字时钟代码,android自定义时钟,package jp.tpackage jp.tsmsogn.digitalclock;import java.util.Calendar; ...

  4. 【Android Training - Performance】提高显示布局文件的性能[Lesson 3 - 按需载入视图(ViewStub的使用方法)]

    Loading Views On Demand [按需载入视图] 某些时候,我们需要一些很复杂的视图却仅仅很少用到.如果我们在它仅仅需要的时候再载入,这样可以减少内存的使用并且给用户带来流畅的体验. ...

  5. android自定义dialog布局文件,Android自定义Dialog及其布局

    实际项目开发中默认的Dialog无法满足需求,需要自定义Dialog及其布局,并响应布局中控件的事件. 上效果图: 自定义Dialog,LogoutDialog: 要将自定义布局传入构造函数中,才能在 ...

  6. android创建布局文件,android学习——Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

  7. android添加动画文件,Android开发之图形图像与动画(五)LayoutAnimationController详解

    首先需要先介绍下LayoutAnimationController: * 1.LayoutAnimationController用于为一个layout里面的控件,或者是一个ViewGroup * 里面 ...

  8. android自定义空的view,ListView android中的自定义空视图

    如果ListView适配器中没有数据,我想显示刷新Button和TextView.我还希望能够向将重新加载列表的按钮添加单击侦听器.以下是我定义当前活动的方式: protected void onCr ...

  9. android自定义相机添加蒙板,拍照剪切

    前几天,我写了一篇自定义相机加取景框的文章,这几天,我又研究了一下,进一步写了蒙板,并且拍照出来剪切只留取景框的照片. 加上对之前代码的调整.现在又记录下来 现在的效果是这样的 布局文件 <?x ...

最新文章

  1. C++ 和 Java,你选哪个? | 每日趣闻
  2. golang panic和recover 捕获异常
  3. ASP.NET MVC 5 實作 GridView 分頁
  4. 声学漫谈之七:扬声器等效电路与参数
  5. android onlescan 参数,Android BLE:从iOS外设广告时,在onLeScan()回调中检索服务UUID
  6. 【转】使用 lsof 查找打开的文件
  7. 将oracle优化器改为CBO,【DB.Oracle】Oracle 优化器 (RBO, CBO)
  8. python与线性代数 线性方程组的解集
  9. redis PUB/SUB(发布/订阅)
  10. Leetcode-5063 Last Stone Weight(最后一块石头的重量)
  11. PPDuck3 for Mac(pp鸭图片批量压缩工具)最新官方版免下载
  12. [Bzoj3233][Ahoi2013]找硬币[基础DP]
  13. AtCoder Grand Contest 003 D - Anticube
  14. 圣诞节贺卡计算机基础知识,制作圣诞节贺卡 如何制作圣诞节贺卡?圣诞节电子贺卡制作方法|电脑制作圣诞节贺卡...
  15. SDRAM-高手进阶,终极内存技术指南----学习笔记
  16. java个人常见异常
  17. 使用java.awt.Robot实现java版的自动点击事件
  18. STM32CubeMX系列教程04_STM32CubeMX各窗口界面描述
  19. LoRa Gateway 笔记 3.1.3 帮助程序 util_pkt_logger 进行 LoRa 空口抓包
  20. JZOJ1496 页

热门文章

  1. 32 Java中多媒体文件上传及页面回显
  2. 【css】星巴克交互设计
  3. 基于51单片机霍尔测速直流电机控制设计(含源码+原理图+论文+PCB封装)、基于STM32闭环步进电机控制系统设计(仿真,程序,说明)-转发分享
  4. ssm+java计算机毕业设计实验室课程管理系统t1g73(程序+lw+源码+远程部署)
  5. 【引流必备技术】斗音直播间弹幕监控脚本,精准采集快速截流【永久脚本+软件使用视频教程】
  6. Idea的安装以及相关配置
  7. 电气控制与PLC之间的本质区别是什么?
  8. 双足机器人ZMP预观控制算法通俗解释
  9. 到底是什么让我对学习如此上瘾?
  10. 西工大计算机学院聂老师,西北工业大学计算机学院导师教师师资介绍简介-马捷中...