240 发简信
IP属地:山东
  • 编译后是没问题了,但如果生成签名的APK还是会出现这个问题,怎么解决呢?

    引用 okhttp3 后编译报错

    implementation("com.squareup.okhttp3:okhttp:3.14.1")方式引用 okhttp3 后,执行编译,报错,内容如下:Caused ...

  • 120
    Android 的一个简单的遥控器自定义控件

    做一个智能风扇时 客户有一个智能遥控器的需求,就写了个比较简单的自定义控件。代码注释很详细了,就不多说了。自己看下啦,有问题的问题一起交流下。 效果如下图:

  • 有几处可以稍加修改下:
    1)构造函数
    public DiskMenuViewEight(Context context) {
    this(context, null);
    }

    public DiskMenuViewEight(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
    }

    public DiskMenuViewEight(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init();
    }
    2)onMeasure函数
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int defaultWidth = 600;
    int defaultHeight = 600;
    int widthMode = MeasureSpec.getMode(widthMeasureSpec);
    int heightMode = MeasureSpec.getMode(heightMeasureSpec);
    int width = 0;
    int height = 0;
    switch (widthMode) {
    case MeasureSpec.AT_MOST:
    width = Math.min(defaultWidth, getMeasuredWidth());
    break;
    case MeasureSpec.EXACTLY:
    width = Math.min(defaultWidth, getMeasuredWidth());
    break;
    case MeasureSpec.UNSPECIFIED:
    width = defaultWidth;
    break;
    default:
    break;
    }

    switch (heightMode) {
    case MeasureSpec.AT_MOST:
    height = Math.min(defaultHeight, getMeasuredHeight());
    break;
    case MeasureSpec.EXACTLY:
    height = Math.min(defaultHeight, getMeasuredHeight());
    break;
    case MeasureSpec.UNSPECIFIED:
    height = defaultHeight;
    break;
    default:
    break;
    }
    setMeasuredDimension(width, height);
    }
    3)onTouchEvent里接口要判空
    if (null != mChangeStateListener && null != mArea) {
    mChangeStateListener.onChangeState(mArea);
    }

    Android 的一个简单的遥控器自定义控件

    做一个智能风扇时 客户有一个智能遥控器的需求,就写了个比较简单的自定义控件。代码注释很详细了,就不多说了。自己看下啦,有问题的问题一起交流下。 效果如下图: