android浮动广告代码,android广告横幅

public class CustomBanner extends RelativeLayout {

//================================================================================

//==== declaration.

protected List _items = new ArrayList();

protected GestureDetector gestureDetector;

protected View.OnTouchListener gestureListener;

protected ImageView _banner = null;

protected String TAG = "CustomBanner";

//================================================================================

//================================================================================

//==== properties

/**

* This property pulls the banners from the state manager. If the banners are not there they will be pulled from the database.

* */

protected List getBanners()

{

// get your banners however way you get them

return this._items;

}

//================================================================================

//================================================================================

//==== constructors

public CustomBanner(Context context, AttributeSet attributes)

{

super(context, attributes);

this.Init(context, attributes);

}

//================================================================================

//================================================================================

//==== protected methods

protected void Init(Context context, AttributeSet attributes)

{

//---- inflate our layout

LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

layoutInflater.inflate(R.drawable.controls_custombanner, this);

this._banner = (ImageView)findViewById(R.id.imgBanner);

// swipe detection on the image

this.gestureDetector = new GestureDetector(new MyGestureDetector());

this.gestureListener = new View.OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

if (gestureDetector.onTouchEvent(event)) {

return true;

}

return false;

}

};

// leave this, it needs to be here in order to redirect the swipe correctly to touch gesture direction

this._banner.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// leave blank, click is redirected to gesture

}

});

this._banner.setOnTouchListener(gestureListener);

// set banner image

this.setBanner(this.getCurrentIndexByWndId());

}

protected int getCurrentIndexByWndId() {

// add your logic here

// you need to access your state to get the last saved id

}

/**

* this function does nothing but set the banner image by the position from the array of banners.

* */

protected void setBanner(int position)

{

_banner.setImageResource(this.getBanners().get(position).ResourceId);

}

/**

* this function tests the validity of the index in the banners array and resets it to 0 if its not valid.

* */

protected int checkValidIndex(int currentIndex){

if (currentIndex > this.getBanners().size()-1)

currentIndex = 0;

return currentIndex;

}

protected void processBannerClick(Banner clickedBanner){

try

{

// here do your logic for the click

}

catch (Exception ex)

{

Log.e(App.Current.getErrorTag(), ex.getMessage());

}

}

//================================================================================

//================================================================================

//==== helper classes

/**

* this is a helper class to detect the gesture or swipe. It uses the onFling() to test whether it was a right or left swipe.

* It increments the position of and sets the appropriate next image on the banner.

* */

protected class MyGestureDetector extends SimpleOnGestureListener {

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

Log.i(TAG, "BANNER: onFling() happened");

int currentIndex = 0;

try {

currentIndex = FromState.getCurrentAdRotatorPosition();

if(isScrollingLeft(e1, e2)) {

// left swipe

if (currentIndex > 0)

currentIndex --;

else currentIndex = getBanners().size()-1;

}

else {

// right swipe

if (currentIndex < getBanners().size()-1)

currentIndex ++;

else currentIndex = 0;

}

} catch (Exception e) {

// do nothing

}

FromState..setCurrentAdRotatorPosition(currentIndex);

setBanner(FromState.getCurrentAdRotatorPosition());

return false;

}

@Override

public boolean onSingleTapUp(MotionEvent ev)

{

Log.i(TAG, "BANNER: onSingleTapUp() happened");

processBannerClick(getBanners().get(FromState.getCurrentAdRotatorPosition()));

return false;

}

/** check if left swipe happened */

private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2){

return e2.getX() > e1.getX();

}

}

//================================================================================

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值