Android 自定义View背景动画 流程简读 <2>

这一篇主要根据上一篇的大致说明,我相信如果看完这一篇,对开发自定义View将会有很大的帮助,

先介绍ColorStateList和StateListDrawable两个类:

ColorStateList说明:https://developer.android.com/reference/android/content/res/ColorStateList.html

StateListDrawable说明:https://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html

这两个共同的特点是根据状态的变化变换View的背景,ColorStateList一般是背景颜色更新.比如:

XML file saved at res/color/button_text.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="#ffff0000"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#ff0000ff"/> <!-- focused -->
    <item android:color="#ff000000"/> <!-- default -->
</selector>

然后在布局中使用:

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    android:textColor="@color/button_text" />

这个地方都是android原生Button来完成解析Button_text.xml来更新父类View的背景/前景的调整,或者其他调整!这个是字体会随着点击变色.

如果是自定义的View,如何来设定这些操作了,下面看一看

<1> : 新建一个android studio工程:PumpKinDrawable:

主类程序:

package org.durian.pumpkindrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

import org.durian.pumpkindrawable.view.ButtonColorDrawable;
import org.durian.pumpkindrawable.view.PumpKinDrawableView;

public class PumpKinMainActivity extends AppCompatActivity {

    private ImageView imageView1;

    private ButtonColorDrawable bcdrawable;

    private PumpKinDrawableView pumpkinview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_pump_kin_main);

        imageView1=(ImageView)findViewById(R.id.imagestate);

        bcdrawable=new ButtonColorDrawable();
        imageView1.setBackground(bcdrawable);
        imageView1.setClickable(true);

        pumpkinview=(PumpKinDrawableView)findViewById(R.id.pumpkinview);
        pumpkinview.setClickable(true);

    }




}

对应布局文件:里面的图片自行给一张放到drawable中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horiz
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 Android 自定义对号,可以使用自定义 View 实现打钩动画功能。以下是实现方法: 首先,创建一个类来实现自定义 View,这个类需要继承自 View,然后重写 onDraw 方法。在 onDraw 方法中,使用 Canvas 和 Path 对象来绘制对号的形状。 在绘制对号之前,需要先设置对号的起点和终点坐标,可以通过计算 View 的宽度和高度来确定这些坐标。然后,使用 Path 对象来创建对号的形状,具体方法如下: 1. 创建一个 Path 对象。 2. 使用 moveTo 方法将画笔移动到对号的起点。 3. 使用 lineTo 方法将画笔画出对号的一条线段。 4. 使用 moveTo 方法将画笔移动到对号的另一个起点。 5. 使用 lineTo 方法将画笔画出对号的另一条线段。 在绘制 Path 对象之后,可以使用 Paint 对象来设置对号的样式,例如颜色和宽度等。最后,在 onDraw 方法中调用 Canvas 的 drawPath 方法来将对号绘制出来。 另外,为了实现打钩动画,还需要使用 ValueAnimator 对象来控制 Path 的绘制过程。具体方法如下: 1. 创建一个 ValueAnimator 对象,并设置动画的起始值和结束值。 2. 在动画的监听器中,使用 ValueAnimator 的 getAnimatedValue 方法来获取当前动画的进度。 3. 根据当前进度,计算出对号的绘制进度,并使用 PathMeasure 对象来获取对应位置的 Path。 4. 在 onDraw 方法中,使用 Canvas 的 drawPath 方法来绘制当前的 Path。 最后,将自定义 View 添加到布局中即可实现自定义对号的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值