android设计轮播功能按钮,Android TV HorizontalScrollView 图片轮播 遥控器上下按键的处理...

当前位置:我的异常网» Android » Android TV HorizontalScrollView 图片轮播 遥控器

Android TV HorizontalScrollView 图片轮播 遥控器上下按键的处理

www.myexceptions.net  网友分享于:2013-07-22  浏览:0次

Android TV HorizontalScrollView 图片轮播 遥控器左右按键的处理

/**

* 加载下一张图片

*/

protected void loadNextImg()

{

View view;

//        int oldViewPos = mContainer.getChildCount() - 1;

//        mViewPos.remove(mContainer.getChildAt(oldViewPos));

//        mContainer.removeViewAt(oldViewPos);

//移除第一张图片,且将水平滚动位置置0

//        scrollTo(0, 0);

mViewPos.remove(mContainer.getChildAt(0));

mContainer.removeViewAt(0);

//获取下一张图片,并且设置onclick事件,且加入容器中

Log.d("mContainer"," mCurrentIndex=" + mCurrentIndex + " mAdapter.getCount()  = " + mAdapter.getCount() );

if(mCurrentIndex == mAdapter.getCount() - 1){

Log.d("mCurrentIndex","mCurrentIndex = " + mCurrentIndex);

Log.d("mAdapter.getCount() - 1","mAdapter.getCount() - 1 = " + mAdapter.getCount());

view = mAdapter.getView(0, null, mContainer);

Log.d("view","0 = " + 0);

mCurrentIndex = 0;

}else{

view = mAdapter.getView(++mCurrentIndex, null, mContainer);

Log.d("view","mCurrentIndex = " + mCurrentIndex);

}

view.setOnClickListener(this);

mContainer.addView(view);

Log.d("mCurrentIndex",mCurrentIndex + "");

//        if(keyCodevalue == 1){

//            mViewPos.put(view, mCurrentIndex - 1);

//        } else{

mViewPos.put(view, mCurrentIndex);

//        }

Log.d("mContainer","++++++++ mCurrentIndex=" + mCurrentIndex + " mAdapter.getCount()  = " + mAdapter.getCount() );

//此处试验很多次 只能这样将诶绝了,但是滑动还有一点问题

scrollTo((findViewById(R.id.id_gallery).getWidth()), 0);

smoothScrollBy(-(findViewById(R.id.id_gallery).getWidth()), 0);

Log.d("id",(findViewById(R.id.id_gallery).getWidth()) + "");

Log.d("mChildWidth",mChildWidth + "");

//当前第一张图片小标

if(mFristIndex == mAdapter.getCount() - 1){

mFristIndex = 0;

} else {

mFristIndex++;

}

Log.d(TAG,mFristIndex + " ");

//如果设置了滚动监听则触发

Log.d("mContainer","++++++++ mCurrentIndex=" + mCurrentIndex + " mFristIndex  = " + mFristIndex );

}

/**

* 加载前一张图片

*/

protected void loadPreImg()

{

int oldViewPos = mContainer.getChildCount() - 1;

Log.d("oldViewPos","oldViewPos = "+ oldViewPos);

Log.d("mFristIndex","mFristIndex = "+ mFristIndex);

if (mFristIndex == 0) {

mViewPos.remove(mContainer.getChildAt(oldViewPos));

mContainer.removeViewAt(oldViewPos);

View view = mAdapter.getView(mAdapter.getCount() - 1, null,

mContainer);

Log.d("view","mAdapter.getCount() - 1" + mAdapter.getCount());

mViewPos.put(view, mAdapter.getCount() - 1);

mContainer.addView(view, 0);

view.setOnClickListener(this);

// 水平滚动位置向左移动view的宽度个像素

scrollTo(0, 0);

Log.d("mChildWidth","mChildWidth ="+mChildWidth);

mFristIndex = mAdapter.getCount() - 1;

Log.d("mFristIndex","mFristIndex = "+mFristIndex);

} else {

int index = mCurrentIndex - mCountOneScreen;

Log.d("mCurrentIndex","mCurrentIndex "+ mCurrentIndex);

Log.d("mCountOneScreen","mCountOneScreen "+ mCountOneScreen);

Log.d("index","mCurrentIndex - mCountOneScreen = "+ index);

if (index >= 0) {

mViewPos.remove(mContainer.getChildAt(oldViewPos));

mContainer.removeViewAt(oldViewPos);

View view = mAdapter.getView(index, null, mContainer);

Log.d("view","index = " + index);

mViewPos.put(view, index);

mContainer.addView(view, 0);

view.setOnClickListener(this);

// 水平滚动位置向左移动view的宽度个像素

scrollTo(0, 0);

Log.d("mChildWidth","mChildWidth = "+mChildWidth);

mFristIndex--;

Log.d("mFristIndex","mFristIndex = "+mFristIndex);

} else {

mViewPos.remove(mContainer.getChildAt(oldViewPos));

mContainer.removeViewAt(oldViewPos);

View view = mAdapter.getView(index + mAdapter.getCount(), null,

mContainer);

Log.d("view","index + mAdapter.getCount() = " + index + mAdapter.getCount());

mViewPos.put(view, index + mAdapter.getCount());

mContainer.addView(view, 0);

view.setOnClickListener(this);

// 水平滚动位置向左移动view的宽度个像素

scrollTo(0, 0);

Log.d("mChildWidth","mChildWidth = "+mChildWidth);

// 当前位置--,当前第一个显示的下标--

mFristIndex--;

Log.d("mFristIndex","mFristIndex = "+mFristIndex);

}

}

mCurrentIndex = mViewPos

.get(mContainer.getChildAt(mCountOneScreen - 1));

Log.d("mCurrentIndex","mCurrentIndex = "+mCurrentIndex);

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

if(keyCode == event.KEYCODE_DPAD_LEFT){

Log.d("keyCodevalue","keyCodevalue = " + keyCodevalue);

if(keyCodevalue == 2){

Log.d("keyCodevalue","zhixing = " + keyCodevalue);

} else {

loadPreImg();

}

keyCodevalue = 1;

}else if(keyCode == event.KEYCODE_DPAD_RIGHT){

Log.d("keyCodevalue","keyCodevalue = " + keyCodevalue);

if(keyCodevalue == 1){

Log.d("keyCodevalue","zhixing = " + keyCodevalue);

} else {

loadNextImg();

}

keyCodevalue = 2;

if(keyCodevalue == 1){  //当之前按下的是鼠标左键的情况下,执行

for (int i = 0; i < mContainer.getChildCount(); i++)

{

mContainer.getChildAt(i).setBackgroundColor(Color.WHITE);

}

mListener.onCurrentImgChanged(mFristIndex, mContainer.getChildAt(0));

} else {

for (int i = 0; i < mContainer.getChildCount(); i++)

{

mContainer.getChildAt(i).setBackgroundColor(Color.WHITE);

}

mListener.onCurrentImgChanged(mFristIndex, mContainer.getChildAt(1));

}

return true;

}

if(keyCodevalue == 1){  //当之前按下的是鼠标左键的情况下,执行

for (int i = 0; i < mContainer.getChildCount(); i++)

{

mContainer.getChildAt(i).setBackgroundColor(Color.WHITE);

}

mListener.onCurrentImgChanged(mFristIndex, mContainer.getChildAt(0));

} else {

for (int i = 0; i < mContainer.getChildCount(); i++)

{

mContainer.getChildAt(i).setBackgroundColor(Color.WHITE);

}

mListener.onCurrentImgChanged(mFristIndex, mContainer.getChildAt(1));

}

Log.d("keyCodeValue","mFristIndex = " + mFristIndex);

return super.onKeyDown(keyCode, event);

}

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值