仿酷狗音乐列表点击item子控件展开功能

也是项目需要大家先来看看效果图

就是这样不过我的项目可能下面没有这么多项而已,说一下思路:

实际上下面展开的哪一块是被隐藏起来了的,可以获取itme的事件点击,接收点击事件展开(显示出来),点击另外的隐藏起来

下面是我的效果图(大家可以自己设置样式,我的比较丑)

好图片有点大,但是看的爽对不!下面贴代码

public class MainActivity extends Activity  {
	private ListView mListView;
	private ListAdapter mAdapter;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mListView = (ListView) findViewById(R.id.list);
		mAdapter = new ListAdapter(this, listener, listener2, listener3);
		mListView.setAdapter(mAdapter);
		//mListView.setOnItemClickListener(this);
	}
	// @Override
	// public void onItemClick(AdapterView<?> parent, View view, int position,
	// long id) {
	// mAdapter.changeImageVisable(position);
	// }

	MyClickListener listener = new MyClickListener() {
		@Override
		public void myOnClick(int position, View v) {
			Toast.makeText(MainActivity.this, "修改", 2000).show();
		}
	};

	MyClickListener2 listener2 = new MyClickListener2() {
		public void myOnClick2(int position, View v) {

			Toast.makeText(MainActivity.this, "重置", 2000).show();
		}
	};

	MyClickListener3 listener3 = new MyClickListener3() {

		@Override
		public void myOnClick3(int position, View v) {
			mAdapter.changeImageVisable(position);
		}
	};
}

Activity的xml代码:

<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:orientation="vertical"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

适配器代码:

public class ListAdapter extends BaseAdapter {
	private Context mContext;
	private int mLastPosition = -1;
	private MyClickListener mListener;
	private MyClickListener2 mListener2;
	private MyClickListener3 mListener3;

	public ListAdapter(Context context, MyClickListener mListener,
			MyClickListener2 mListener2, MyClickListener3 mListener3) {
		this.mContext = context;
		this.mListener = mListener;
		this.mListener2 = mListener2;
		this.mListener3 = mListener3;
	}

	@Override
	public int getCount() {
		return 100;
	}

	@Override
	public Object getItem(int position) {
		return null;
	}

	@Override
	public long getItemId(int position) {
		return 0;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		Holder holder = new Holder();
		if (convertView == null) {
			LayoutInflater inflater = LayoutInflater.from(mContext);
			convertView = inflater.inflate(R.layout.list_item, null);
			holder.textView = (TextView) convertView
					.findViewById(R.id.textView);
			holder.UEFAView = (ImageView) convertView
					.findViewById(R.id.image_uefa);
			holder.mascotView = (ImageView) convertView
					.findViewById(R.id.image_mascot);
			holder.hint = convertView.findViewById(R.id.hint_image);
			convertView.setTag(holder);
		} else {
			holder = (Holder) convertView.getTag();
		}
		holder.textView.setText("Hello,It is " + position);
		if (position == mLastPosition) {
			holder.hint.setVisibility(View.VISIBLE);
		} else {
			holder.hint.setVisibility(View.GONE);
		}

		holder.UEFAView.setOnClickListener(mListener);
		holder.UEFAView.setTag(position);
		//
		holder.mascotView.setOnClickListener(mListener2);
		holder.mascotView.setTag(position);

		holder.textView.setOnClickListener(mListener3);
		holder.textView.setTag(position);

		return convertView;
	}

	public static abstract class MyClickListener implements OnClickListener {
		@Override
		public void onClick(View v) {
			myOnClick((Integer) v.getTag(), v);
		}

		public abstract void myOnClick(int position, View v);
	}

	public static abstract class MyClickListener2 implements OnClickListener {
		public void onClick(View v) {
			myOnClick2((Integer) v.getTag(), v);
		}

		public abstract void myOnClick2(int position, View v);
	}

	public static abstract class MyClickListener3 implements OnClickListener {
		public void onClick(View v) {
			myOnClick3((Integer) v.getTag(), v);
		}
		public abstract void myOnClick3(int position, View v);
	}

	class Holder {
		TextView textView;
		ImageView UEFAView;
		ImageView mascotView;
		View hint;
	}

	public void changeImageVisable(int position) {
		if (position != mLastPosition) {
			mLastPosition = position;
		} else {
			mLastPosition = -1;
		}
		notifyDataSetChanged();
	}
}

listview的item的list_item.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="60dp" >

        <ImageView
            android:id="@+id/iv_status"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:src="@drawable/normal" />

        <LinearLayout
            android:id="@+id/ll_context"
            android:layout_width="200dp"
            android:layout_height="60dp"
            android:layout_toRightOf="@id/iv_status"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/tv_context"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="asdf" />

            <LinearLayout
                android:layout_width="150dp"
                android:layout_height="60dp"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/tv_select"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="asdf" />

                <TextView
                    android:id="@+id/tv_setlen"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="asdf" />
            </LinearLayout>
        </LinearLayout>

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:layout_alignParentRight="true"
            android:gravity="center"
            android:text="展开"
            android:textSize="20sp" />
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/hint_image"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:orientation="horizontal"
        android:visibility="gone" >

        <ImageView
            android:id="@+id/image_uefa"
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:layout_weight="1"
            android:src="@drawable/uefa" />

        <ImageView
            android:id="@+id/image_mascot"
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:layout_weight="1"
            android:src="@drawable/mascot" />
    </LinearLayout>

</LinearLayout>

嗯!到这里就差不多了 我会把代码上传上去有兴趣的同志可以看看

时间: 2024-10-06 03:16:13

仿酷狗音乐列表点击item子控件展开功能的相关文章

酷狗音乐展示滚动歌词效果的控件实现

文章来自http://blog.csdn.net/zhaodecang 在音乐播放器项目中使用到酷狗音乐展示歌词的效果,需要支持修改字体.颜色.渐变色等功能 截图如下(效果不是很好,请下载Demo查看) 歌词绘制流程核心代码如下(具体实现过程请看Github源码) @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 中心Y坐标 float centerY = getHeight() / 2 + mTe

android仿酷狗歌曲列表界面点击右侧字母定位到该字母的集合列表

原文:android仿酷狗歌曲列表界面点击右侧字母定位到该字母的集合列表 源代码下载地址:http://www.zuidaima.com/share/1550463694064640.htm android仿酷狗歌 曲列表界面 点击右侧字母定位到该字母的集合列表,也像类似联系人界面效果

仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源代码)

转载请说明原出处,谢谢~~ 上一篇仿酷狗日志结束后,整个换肤功能就仅仅剩下调色板功能没有做了.我本以为会非常easy.可是研究了酷狗的调色板功能后发现不是那么简单的事情.首先看一下酷狗的调色板的样子: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1aG9uZ3NodQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > waterm

关于仿酷狗音乐播放器开源:寻求一套音乐播放器素材,让仿酷狗开源

转载请说明原出处,谢谢~~ 距离公布測试版的仿酷狗音乐播放器.已经几个月过去了.期间非常多网友加我QQ来问我开源的问题,我也早有开源意向. 但我也一直没有得到可靠的信息,保证开源后没有不论什么问题. 所以我打算给这个软件全然换一套界面素材.放弃原来的酷狗素材. 这样开源也就没有不论什么问题了,问题是我个人PS水平太烂.仅仅会切切图.如今寻求一套完整的音乐播放器的素材,素材内容要全面,能够用来替代酷狗的素材. 假设有哪位朋友有这种素材,或者有时间能够做出一套素材让我使用,我将感激不尽.素材替换完成

仿酷狗音乐播放器已开源!

转载请说明原出处,谢谢:http://blog.csdn.net/zhuhongshu/article/details/41037875 距离我发布测试版的Redrain音乐盒(仿酷狗播放器),现在正好刚2个月.博客留言和QQ群里也一直有网友关心这个小项目开源的问题.先感谢网友对这个小项目的支持.之前我一直担心版权问题而没有开源这个项目,因为我只是个在校大学生,不想惹麻烦,希望大家体谅! 关于这个Redrain音乐盒的发布程序的说明和使用方法,见<Redrain仿酷狗音乐播放器开发完毕,发布测试

酷狗音乐PC端怎么使用听歌识曲功能?

生活中很多时候会听到一些美妙的音乐,耳熟或者动听却不知道它的名字.就像第一眼看到你心动的那个她却不知她叫什么.移动端有酷狗音乐的听歌识曲.现在PC端也有了相同的功能,每当我们看到一部精彩影视剧听到美妙的背景音乐却不知到名字的时候便可以用的到这个功能. 2.其次,同时打开酷狗音乐,点击音乐搜索栏旁边的那个" 听歌识曲 "按钮 3. 随后酷狗便会自动识别歌曲名称及歌词 .如图: 4.接下来就方便多了,可以试听可以下载,这里就不做过多介绍.

Redrain仿酷狗音乐播放器开发完毕,发布测试程序

转载请说明原出处,谢谢~~ 从暑假到现在中秋刚过,我用duilib开发仿酷狗播放器大概经历了50天.做仿酷狗的意图只是看原酷狗的界面比较漂亮,想做个完整一些的工程来练习一下duilib.今天把写好的程序代码综合一下,发布测试版,现在一共写了10355行c++代码和大约2000行xml代码.测试版的程序肯定会有不少bug,而我自己也没有精心去测试程序,希望发现问题的朋友联系我一下,我去修正.程序在win8下运行会有问题,请在兼容性里调整一下!整个软件的开发过程可以看前面发布的博客! 软件界面上绝大

仿酷狗音乐播放器开发日志二十四 选项设置窗体的实现(附328行xml布局源码)

转载请说明原出处,谢谢~~ 花了两天时间把仿酷狗的选项设置窗体做出来了,当然了只是做了外观.现在开学了,写代码的时间减少,所以整个仿酷狗的工程开发速度减慢了.今天把仿酷狗的选项设置窗体的布局代码分享出来,给学习duilib布局的朋友做个demo.现在编写的仿酷狗选项设置窗体和原酷狗的窗体不细看几乎看不出差别,控件的布局位置和原酷狗最多只有几个像素的位置差别. 先来看一下原酷狗的选项设置窗体的其中一个页面: 如果还不太会布局的朋友可以先看我前些日子写的关于duilib布局的博客<duilib各种布

C# WPF 低仿网易云音乐(PC)Banner动画控件

由于技术有限没能做到一模一样的动画,只是粗略地做了一下.动画有点生硬,还有就是没做出网易云音乐的立体感.代码非常简单粗暴而且我也写有注释,这里就不多啰嗦了,直接贴代码. 算了,啰嗦几句.原理是这样的,建立一个用户控件,在控件内添加3个border,对border进行缩放和移动动画. 低仿效果 网易云音乐原版 代码 后台 using System; using System.Collections.Generic; using System.Diagnostics; using System.Li