android 仿网易标签切换,高仿网易云音乐客户端的Home页面切换Tabhost-IT蓝豹
1.高仿网易云音乐客户端的Home页面切换Tabhost
高仿网易云音乐客户端的Home页面切换Tabhost,并且三角形是透明的,
实现方式,自定义AnimTabsView继承 RelativeLayout 里面对当前选中的item 处理 三角形变成透明效果,
即在onDraw 里面对三角形图片经行透明度处理,AnimTabsView提供 setOnAnimTabsItemViewChangeListener
方法的onChange()用来监听点击切换tabhost.
下面主要是AnimTabsView里面的onDraw()实现的,部分代码如下:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if ((this.mScroller == null) || (!this.mScroller.computeScrollOffset())) {
this.mLeftDrawRect.set(0, this.mCurrentSlideY, this.mCurrentSlideX, this.mCurrentSlideY + this.mShadow.getHeight());
canvas.drawBitmap(this.mShadow, null, this.mLeftDrawRect, null);
this.mRightDrawRect.set(this.mCurrentSlideX + this.mSlideIcon.getWidth(), this.mCurrentSlideY, getWidth(), this.mCurrentSlideY
+ this.mShadow.getHeight());
canvas.drawBitmap(this.mShadow, null, this.mRightDrawRect, null);
canvas.drawBitmap(this.mSlideIcon, this.mCurrentSlideX, this.mCurrentSlideY, null);
return;
}
int scrollX = this.mScroller.getCurrX();
int scrollY = this.mScroller.getCurrY();
this.mLeftDrawRect.set(0, scrollY, scrollX, scrollY + this.mShadow.getHeight());
canvas.drawBitmap(this.mShadow, null, this.mLeftDrawRect, null);
this.mRightDrawRect.set(scrollX + this.mSlideIcon.getWidth(), scrollY, getWidth(),
scrollY + this.mShadow.getHeight());
canvas.drawBitmap(this.mShadow, null, this.mRightDrawRect, null);
canvas.drawBitmap(this.mSlideIcon, scrollX, scrollY, null);
invalidate();
}
运行效果:
2.FlipViewPager 对item实现左右对折滑动翻页效果
FlipViewPager 对每一条item实现左右对折滑动翻页效果,解决左右滑动和上下滑动的事件分发处理机制。
内部实现如下:用ListView试下,对listview设置adapter,这个adapter继承BaseFlipAdapter
,然后对每一个item进行view处理,部分代码如下:
class FriendsAdapter extends BaseFlipAdapter {
private final int PAGES = 3;
private int[] IDS_INTEREST = {R.id.interest_1, R.id.interest_2, R.id.interest_3, R.id.interest_4, R.id.interest_5};
public FriendsAdapter(Context context, List items, FlipSettings settings) {
super(context, items, settings);
}
@Override
public View getPage(int position, View convertView, ViewGroup parent, Friend friend1, Friend friend2) {
final FriendsHolder holder;
if (convertView == null) {
holder = new FriendsHolder();
convertView = getLayoutInflater().inflate(R.layout.friends_merge_page, parent, false);
holder.leftAvatar = (ImageView) convertView.findViewById(R.id.first);
holder.rightAvatar = (ImageView) convertView.findViewById(R.id.second);
holder.infoPage = getLayoutInflater().inflate(R.layout.friends_info, parent, false);
holder.nickName = (TextView) holder.infoPage.findViewById(R.id.nickname);
for (int id : IDS_INTEREST)
holder.interests.add((TextView) holder.infoPage.findViewById(id));
convertView.setTag(holder);
} else {
holder = (FriendsHolder) convertView.getTag();
}
switch (position) {
// Merged page with 2 friends
case 1:
holder.leftAvatar.setImageResource(friend1.getAvatar());
if (friend2 != null)
holder.rightAvatar.setImageResource(friend2.getAvatar());
break;
default:
fillHolder(holder, position == 0 ? friend1 : friend2);
holder.infoPage.setTag(holder);
return holder.infoPage;
}
return convertView;
}
@Override
public int getPagesCount() {
return PAGES;
}
private void fillHolder(FriendsHolder holder, Friend friend) {
if (friend == null)
return;
Iterator iViews = holder.interests.iterator();
Iterator iInterests = friend.getInterests().iterator();
while (iViews.hasNext() && iInterests.hasNext())
iViews.next().setText(iInterests.next());
holder.infoPage.setBackgroundColor(getResources().getColor(friend.getBackground()));
holder.nickName.setText(friend.getNickname());
}
class FriendsHolder {
ImageView leftAvatar;
ImageView rightAvatar;
View infoPage;
List interests = new ArrayList<>();
TextView nickName;
}
}
运行效果:
android 仿网易标签切换,高仿网易云音乐客户端的Home页面切换Tabhost-IT蓝豹相关推荐
- node.js+uniapp计算机毕业设计安卓仿网易云音乐客户端APP(程序+APP+LW)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...
- 计算机毕业设计PHP+安卓仿网易云音乐客户端APP(源码+程序+lw+远程调试)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: phpStudy+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vu ...
- 计算机毕业设计Node.js+Vue安卓仿网易云音乐客户端APP(程序+源码+LW+部署)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...
- 计算机毕业设计Python+uniapp+安卓仿网易云音乐客户端APP(WEB+APP+LW)
计算机毕业设计Python+uniapp+安卓仿网易云音乐客户端APP(WEB+APP+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区 ...
- node.js毕业设计安卓仿网易云音乐客户端APP(程序+APP+LW)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...
- Python-Django毕业设计安卓仿网易云音乐客户端APP(程序+LW)
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- vue实现仿网易云音乐客户端
快毕业了要做毕设,因为在公司实习的是前端所以选择使用vue实现一个网易云音乐客户端. 主界面 拥有五套主题配色 播放器界面 多人聊天室 拖动网站内对象到此可分享任意内容 歌词滚动使用better-sc ...
- 解锁网易云音乐客户端变灰歌曲
解锁网易云音乐客户端变灰歌曲 最近周杰伦出新歌了,可是最喜欢的网易云木有版权?为了听歌不得不安装多个音乐播放器?喜欢的歌还要收费开会员?这里安利一个超好用的方法,以上问题通通搞定!在分享之前首先分享原 ...
- 网易云音乐——歌曲播放器页面
网易云音乐--歌曲播放器页面 git地址 https://gitee.com/chen-haibin799/netease-cloud-music.git 实现步骤 效果图 1.实现顶部导航栏 这个写 ...
最新文章
- 使用PowerMock模拟构造函数
- 深度学习(02)-- ANN学习
- 【转】ASP.NET 表单验证实现浅析
- 好看的按钮设计HTML+CSS,漂亮的动画设计
- #WP7 GPS# 如何判断GPS设备可用或者用户是否开启了GPS
- 华为手机bootloader上锁回锁教程及ADB工具下载——精华帖
- Vue安装步骤及教程(详细)
- 查看和编辑xml结构标签内容的利器【一】: firstobject XML editor;查看ftl,freemarker工具软件
- 加州靡情第一至七季/全集Californication迅雷下载
- AI - Intelligent Agents
- 英语学习——长难句01
- java中的char_java中的char是什么意思?
- Mac电脑快速切换输入法!自动切换输入法!
- Windows.h和windows.h的区别
- 计算机的硬件和软件主成
- Java猿社区—ShardingSphere之广播表与绑定表
- 使用Matlab提取ADC数据占空比变化的波形
- 盛大资深软件工程师谈Android开发经验
- 新视野大学英语第三版第二册视听说答案
- C6820摄像头的托管驱动 - Codeplex