滑动-【急】gridView手势移动,更改item背景颜色!

问题描述

【急】gridView手势移动,更改item背景颜色!

在gridView上手指移动,在移动路径上的item背景颜色发生改变! 如图:
本人的思路:
是在Activity里面创建了一个手势的内部类,重写onSroll方法(这个方法是判断用户手势按下之后移动的事件),因为GridView监听是写在activity里面的,在内部类里面的onSroll里面把gridView的监听写在这个里面;gridView监听里面判断position是否相等,然后new adapter类的对象通过对象调用getDropDownView的方法(android的方法,getView差不多)取到显示在item上面的textView的id 然后通过textView对象设置背景颜色,实现上图! 但是发现运行起来的时候只有点击有反应 滑动的时候并没有反应! 求大神解答! 以下是Demo的详细片段

存在activity中的内部类:

private class MyGestureListener extends SimpleOnGestureListener {

    @Override
    public boolean onScroll( MotionEvent e1, MotionEvent e2, float distanceX, float distanceY ) {
        int gvFlag = 0; // 每次添加gridview到viewflipper中时给的标记

        if ( e1.getX() - e2.getX() > 30 ) {
            // 像左滑动
            // enterNextMonth(gvFlag);
            // lessonDateAdapter.getItem(position);
            // Log.d("---->", "::" + gridView.getChildCount());
            // gridView.setBackgroundColor(Color.RED);
            getMonitor();
            return true;
        } else if ( e1.getX() - e2.getX() < -30 ) {
            // 向右滑动
            // enterPrevMonth(gvFlag);
            getMonitor();
            return true;
        }
        return false;
    }
}

activity中的gridView监听事件:

    public void getMonitor() {
    gridView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick( AdapterView<?> parent, View view, int position, long id ) {

            // 点击任何一个item,得到这个item的日期(排除点击的是周日到周六(点击不响应))
            int startPosition = calV.getStartPositon();
            int endPosition = calV.getEndPosition();
            if ( startPosition <= position + 7 && position <= endPosition - 7 ) {
                /** 用户点击后弹出对话框 */
                if ( gridView.getItemIdAtPosition(position) == position ) {
                                           //adapter是new的gridView适配器类的对象;
                    adapter.getDropDownView(position, view, null);
                    // tv_gvItem.setText("----");
                }
            }
        }
    });
}

adapter中重写的方法:

@Override
publicView getDropDownView( int position, View convertView, ViewGroup parent ) {
    textView = (TextView) convertView.findViewById(R.id.tvtext);
    if ( position == getItemId(position) ) {
        textView.setTextColor(Color.BLUE);
    } else {
        textView.setTextColor(Color.RED);
    }
    Log.d("---->", ":::" + textView);
    return convertView;
}

解决方案

1027462601加我,帮你写了个demo、

解决方案二:

为什么不用Activity的ontouchEvent方法监听手指点击事件?手指滑动的时候会先按下,滑倒另一个地方再抬起,我们就可以根据按下的坐标和抬起的坐标算出用户是往哪一个方向滑动了。

时间: 2025-01-07 16:08:23

滑动-【急】gridView手势移动,更改item背景颜色!的相关文章

html-js touch 实现ListDialog背景颜色变化

问题描述 js touch 实现ListDialog背景颜色变化 现在有一个ListDialog,其中有多个Item(默认背景颜色为黑色),想实现如下要求:1.手指触碰时,Item背景颜色变成黄色,抬手时Item背景颜色为黑色:2.手指滑动List时,Item的背景颜色不变化.

android gridview+viewpager,根据 position改变item背景。

问题描述 android gridview+viewpager,根据 position改变item背景. android gridview+viewpager,怎样根据setOnItemClickListener position改变item背景. viewpager是循环加入的. activity里 for (i = 0; i < videoNum / 4; i++) {//我这里的videoNum是20 view = getActivity().getLayoutInflater().inf

Win7无法更改桌面背景图片的解决方法

故障现象: Windows 7桌面背景突然之间无法更改. 原因分析: 病毒或者第三方的优化,或者是安装主题软件等都有可能导致这样的问题. 解决方案: 常规方法:查杀病毒,禁用所有启动项,这个需要先尝试都无效之后在进行下面的操作. 方法一: 在开始搜索框中输入轻松访问中心,回车; 拉动滑块到"浏览所有设置".单击"使计算机更易于查看"; 查看一下窗口底部"使屏幕上显示的内容更易于查看"部分"删除背景图像(如果有)"是否被勾选?如

Windows8中如何更改桌面背景

  操作步骤: 1.打开"个性化",有两种方法:在桌面空白处单击鼠标右键点击"个性化"选项;或点击win8边栏选项选择"设置"选项后选择"个性化"选项; 2.开启个性化控制面板后可以选择不同的桌面主题; 3.点击"桌面背景"即进入桌面背景设置界面; 4.点击"窗口颜色",可以更改半透明窗口颜色; 5.点击"屏幕保护程序",可以打开屏幕保护程序设置对话框.

Windows7无法更改桌面背景图片怎么办

  故障现象: Windows 7桌面背景突然之间无法更改. 原因分析: 病毒或者第三方的优化,或者是安装主题软件等都有可能导致这样的问题. 解决方案: 常规方法:查杀病毒,禁用所有启动项,这个需要先尝试都无效之后在进行下面的操作. 方法一: 在开始搜索框中输入轻松访问中心,回车; 拉动滑块到"浏览所有设置".单击"使计算机更易于查看"; 查看一下窗口底部"使屏幕上显示的内容更易于查看"部分"删除背景图像(如果有)"是否被勾选

MathType如何更改工作区域的背景颜色

  具体操作过程如下: 1.打开MathType公式编辑器软件进入到编辑状态,不管你是从Word中插入打开还是双击桌面上的MathType应用图标都没有影响.这里可以看到编辑区的背景是白色的,这也是MathType默认的工作颜色. MathType工作界面 2.在MathType菜单栏中,选择"预置"--"工作区预置". 在MathType菜单中选择"预置"--"工作区预置" 3.进入工作区预置后,会弹出一个"工作区

如何设置和更改桌面背景?

  一.设置桌面背景 1.打开"显示属性" 将鼠标移到桌面上的空白处,然后单击鼠标右键,会弹出鼠标右键菜单,单击菜单上的"属性". 打开"显示 属性"窗口也可以采用前面所述的方法:先打开"控制面板",然后单击"外观与主题"图标.在"外观与主题"窗口单击"更改计算机的主题". 2.选择桌面背景图片 接下来在"显示 属性"窗口上单击"桌面&q

listview-点击 ListView 中的 item,然后改变行的背景颜色

问题描述 点击 ListView 中的 item,然后改变行的背景颜色 我想使用BaseAdapter 在ListView中显示item.我在BaseAdapter使用下面的代码: @Override public View getView(final int position, View convertView, ViewGroup parent) { //... convertView.setOnTouchListener(new OnTouchListener() { @Override

ListView点击时Item背景切换

mainActivity如下: package cn.testlistviewcolor; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; import android.widget.SimpleAdapter; //小功能: //1 点击ListView的item