[Android 开发经验三十天]D29一小画家小问题跟改善方法

职涯在走,铁人赛文章一定要有。

小画家小问题跟改善方法

tags: 铁人赛

嗨,大家安安,今天来说说小画家小问题跟改善方法

Q1:橡皮擦不能擦图层只能改变颜色?

A1:橡皮擦擦图层要加上

setWillNotDraw(false);
setLayerType(LAYER_TYPE_HARDWARE, null);

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

可以看一下setXfermode的图,我们看到clear那张他就是将整个图层擦去,所以我们小画家就是用这个方法当作橡皮擦

用两个图层,下层是放图片,上层是用自定义View小画家

这样就可以让我们的自定义View小画家可以当作图片编辑器的一种

Q:如何上下分开?
A:用FramLayout可以用上下图层
如图所示,这样底层是彩虹小马上层是自定义View小画家

Q:databinding使用有问题?
A:之前用不同装置大小layout都绑databinding的时候有遇过问题
读不到其中一个大小的layout,可以使用bulid -> clear project
再重build,因为有可能是没重build吃不到的问题
code:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">


<!--app:srcCompat="@drawable/ic_unicorn"-->
        <ImageView
            app:srcCompat="@drawable/ic_unicorn"
            android:id="@+id/horse"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_constraintTop_toTopOf="parent"
             />
        <com.example.ktforfilemanager.paintview.PPView
            android:id="@+id/paintView"
            android:layout_width="0dp"
            android:layout_height="692dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/widthprogress" />
        <LinearLayout
            android:id="@+id/linearLayout3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <Button
                android:id="@+id/eraser"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:background="@drawable/eraser"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <Button
                android:id="@+id/go"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:background="@drawable/ic_paintbrush"
                app:layout_constraintStart_toEndOf="@+id/eraser"
                app:layout_constraintTop_toTopOf="parent" />

            <Button
                android:id="@+id/back"
                android:layout_width="40dp"
                android:layout_height="wrap_content"
                android:background="@drawable/ic_undo_black_24dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toEndOf="@+id/go"
                app:layout_constraintTop_toTopOf="parent" />
            <Button
                android:id="@+id/next"
                android:background="@drawable/ic_redo_black_24dp"
                android:layout_width="40dp"
                android:layout_height="wrap_content"/>

            <Button
                android:id="@+id/save"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:background="@drawable/ic_save_black_24dp" />

            <Button
                android:id="@+id/turn"
                android:layout_width="40dp"
                android:layout_height="wrap_content"
                android:background="@drawable/ic_arrow_forward_black_24dp"/>
            <Button
                android:id="@+id/cloud"
                android:layout_width="40dp"
                android:layout_height="wrap_content"
                android:background="@drawable/ic_cloud_black_24dp"/>
            <Button
                android:layout_width="40dp"
                android:layout_height="wrap_content"
                android:id="@+id/water"/>
        </LinearLayout>


        <SeekBar
            android:id="@+id/widthprogress"
            android:layout_width="0dp"
            android:layout_height="25dp"
            android:visibility="gone"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/linearLayout3"
            app:layout_constraintTop_toBottomOf="@+id/linearLayout3" />

        <SeekBar
            android:visibility="gone"
            android:id="@+id/transparenctbar"
            android:layout_width="0dp"
            android:layout_height="25dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/widthprogress" />
        <SeekBar
            android:visibility="gone"
            android:id="@+id/eraserprogress"
            android:layout_width="0dp"
            android:layout_height="25dp"

            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/linearLayout3"
            app:layout_constraintTop_toBottomOf="@+id/linearLayout3" />
        <!--  android:visibility="gone"-->

        <LinearLayout
            android:id="@+id/chColorLayout"
            android:visibility="gone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/transparenctbar">

            <Button
                android:id="@+id/red"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_margin="10dp"
                android:background="@color/colorRed" />

            <Button
                android:id="@+id/yellow"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_margin="10dp"
                android:background="@color/colorYy" />
            <Button
                android:id="@+id/black"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_margin="10dp"
                android:background="#000000" />

            <Button
                android:id="@+id/blue"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_margin="10dp"
                android:background="#3F51B5" />
            <Button
                android:id="@+id/orange"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_margin="10dp"
                android:background="#E91E63" />
            <Button
                android:id="@+id/green"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_margin="10dp"
                android:background="#4CAF50" />
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>

今天就差不多这样啦,其他明天见


<<:  [今晚我想来点 Express 佐 MVC 分层架构] DAY 27 - 用 Webpack 打包 Express

>>:  【PHP 设计模式大头菜】策略模式 Strategy Pattern

Day 18 Docker Compose 简介和安装

实务上,一个服务往往可以拆解成数个微服务组成。以市占相当高的 Wordpress 内容管理系统 CM...

Day21 AJAX 请求方法?

大家好我是乌木白,今天要衔接昨天的内容,我们今天继续讨论AJAX! 什麽是 HTTP 请求方法? ...

Day 12 - [爬虫] 02-储存爬虫资料-CSV格式

接续上一篇,昨天已经把问答集的内容都爬下来了,再来要把内容整理成下一个阶段(训练模型),方便使用的格...

Day27 Apex 配对机制分析

Apex 为一款笔者近期最喜欢的竞技游戏,想藉着分析的名义,趁机推广一下这款大逃杀游戏。由於此游戏一...

33岁转职者的前端笔记-DAY 19 练习写一个计算机

写计算机前必学的知识点 资料型别 (typeof) 检查变数的型别:typeof 资料型别如下: s...