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蓝豹相关推荐

  1. node.js+uniapp计算机毕业设计安卓仿网易云音乐客户端APP(程序+APP+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

  2. 计算机毕业设计PHP+安卓仿网易云音乐客户端APP(源码+程序+lw+远程调试)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: phpStudy+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vu ...

  3. 计算机毕业设计Node.js+Vue安卓仿网易云音乐客户端APP(程序+源码+LW+部署)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

  4. 计算机毕业设计Python+uniapp+安卓仿网易云音乐客户端APP(WEB+APP+LW)

    计算机毕业设计Python+uniapp+安卓仿网易云音乐客户端APP(WEB+APP+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区 ...

  5. node.js毕业设计安卓仿网易云音乐客户端APP(程序+APP+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

  6. Python-Django毕业设计安卓仿网易云音乐客户端APP(程序+LW)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  7. vue实现仿网易云音乐客户端

    快毕业了要做毕设,因为在公司实习的是前端所以选择使用vue实现一个网易云音乐客户端. 主界面 拥有五套主题配色 播放器界面 多人聊天室 拖动网站内对象到此可分享任意内容 歌词滚动使用better-sc ...

  8. 解锁网易云音乐客户端变灰歌曲

    解锁网易云音乐客户端变灰歌曲 最近周杰伦出新歌了,可是最喜欢的网易云木有版权?为了听歌不得不安装多个音乐播放器?喜欢的歌还要收费开会员?这里安利一个超好用的方法,以上问题通通搞定!在分享之前首先分享原 ...

  9. 网易云音乐——歌曲播放器页面

    网易云音乐--歌曲播放器页面 git地址 https://gitee.com/chen-haibin799/netease-cloud-music.git 实现步骤 效果图 1.实现顶部导航栏 这个写 ...

最新文章

  1. 使用PowerMock模拟构造函数
  2. 深度学习(02)-- ANN学习
  3. 【转】ASP.NET 表单验证实现浅析
  4. 好看的按钮设计HTML+CSS,漂亮的动画设计
  5. #WP7 GPS# 如何判断GPS设备可用或者用户是否开启了GPS
  6. 华为手机bootloader上锁回锁教程及ADB工具下载——精华帖
  7. Vue安装步骤及教程(详细)
  8. 查看和编辑xml结构标签内容的利器【一】: firstobject XML editor;查看ftl,freemarker工具软件
  9. 加州靡情第一至七季/全集Californication迅雷下载
  10. AI - Intelligent Agents
  11. 英语学习——长难句01
  12. java中的char_java中的char是什么意思?
  13. Mac电脑快速切换输入法!自动切换输入法!
  14. Windows.h和windows.h的区别
  15. 计算机的硬件和软件主成
  16. Java猿社区—ShardingSphere之广播表与绑定表
  17. 使用Matlab提取ADC数据占空比变化的波形
  18. 盛大资深软件工程师谈Android开发经验
  19. 新视野大学英语第三版第二册视听说答案
  20. C6820摄像头的托管驱动 - Codeplex

热门文章

  1. 我的spfa (= =)!
  2. 路由策略(acl、IP-prefix、route-policy)
  3. 树莓派和Windows电脑互传数据方法
  4. 上拉加载更多其他方法
  5. Zuul网关的快速使用
  6. 手把手带你搭建一个自己的云服务器并部署Web程序
  7. 五大常用项目管理工具软件-也支持敏捷开发
  8. linux 目录中的文件和子目录生成jar包文件的方法
  9. 在oracle中imp是什么意思,Oracle中的Imp和Expt用法
  10. 机器学习——神经网络、深度学习 知识点总结 及 面试题汇总