android 携程页面,android 仿携程首页源码(自定义button)

【实例简介】

【实例截图】

d309942070f7596e21011016cb46da3b.jpg

【核心代码】

package com.example.xiechengdemo;

import android.content.Context;

import android.content.res.TypedArray;

import android.util.AttributeSet;

import android.util.Log;

import android.view.MotionEvent;

import android.view.animation.Animation;

import android.view.animation.ScaleAnimation;

import android.widget.FrameLayout;

import android.widget.TextView;

public class HomeButtonView extends FrameLayout {

private ScaleAnimation animation_down;

private ScaleAnimation animation_up;

private boolean attri_doAnim;// 是否执行动画,在xml属性中可配置,默认为ture;

private TextView textview;

private HomeBtnOnClickListener homeBtnOnClickListener;

public interface HomeBtnOnClickListener {

void onClickDown(HomeButtonView homebtn);

void onClickUp(HomeButtonView homebtn);

}

public void setHomeBtbOnClickListener(

HomeBtnOnClickListener homeBtnOnClickListener) {

this.homeBtnOnClickListener = homeBtnOnClickListener;

}

public HomeButtonView(Context paramContext) {

this(paramContext, null);

}

public HomeButtonView(Context paramContext, AttributeSet paramAttributeSet) {

this(paramContext, paramAttributeSet, 0);

}

public HomeButtonView(Context paramContext, AttributeSet paramAttributeSet,

int paramInt) {

super(paramContext, paramAttributeSet, paramInt);

TypedArray localTypedArray = paramContext.obtainStyledAttributes(

paramAttributeSet, R.styleable.home_button);

if (localTypedArray != null) {

// 得到xml中设置的属性值

this.attri_doAnim = localTypedArray.getBoolean(

R.styleable.home_button_doAnim, true);

localTypedArray.recycle();

}

loadAnim();

}

// 设置动画

private void loadAnim() {

ScaleAnimation localScaleAnimation1 = new ScaleAnimation(1.0F, 0.95F,

1.0F, 0.95F, 1, 0.5F, 1, 0.5F);

localScaleAnimation1.setFillAfter(true);

localScaleAnimation1.setDuration(200L);

this.animation_down = localScaleAnimation1;

ScaleAnimation localScaleAnimation2 = new ScaleAnimation(0.95F, 1.0F,

0.95F, 1.0F, 1, 0.5F, 1, 0.5F);

localScaleAnimation2.setFillAfter(true);

localScaleAnimation2.setDuration(200L);

this.animation_up = localScaleAnimation2;

this.animation_up.setAnimationListener(new AnimaListen(this));

}

private void start_AnimDown() {

invalidate();

startAnimation(this.animation_down);

}

private void start_AnimUp() {

invalidate();

startAnimation(this.animation_up);

}

public boolean onTouchEvent(MotionEvent paramMotionEvent) {

switch (paramMotionEvent.getAction()) {

case MotionEvent.ACTION_DOWN:

Log.d("cc", "HomeBtn==>ACTION_DOWN");

if (attri_doAnim) {

if (homeBtnOnClickListener != null) {

homeBtnOnClickListener.onClickDown(this);

}

start_AnimDown();

return true;

}

break;

case MotionEvent.ACTION_MOVE:

Log.d("cc", "HomeBtn==>ACTION_MOVE");

break;

case MotionEvent.ACTION_UP:

if (homeBtnOnClickListener != null) {

homeBtnOnClickListener.onClickUp(this);

}

Log.d("cc", "HomeBtn==>ACTION_UP");

if (attri_doAnim) {

start_AnimUp();

return true;

}

break;

default:

break;

}

return true;

}

class AnimaListen implements Animation.AnimationListener {

AnimaListen(HomeButtonView paramHomeButtonView) {

}

public void onAnimationEnd(Animation arg0) {

}

public void onAnimationRepeat(Animation paramAnimation) {

}

public void onAnimationStart(Animation paramAnimation) {

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值