仿照网易云音乐界面 ,页面UI实现的听不错的,学习ui的朋友可以下载下来研究研究,android特效更多学习。

项目大体框架,由ViewPager和TabContentPagerAdapter实现顶部的左右滑动切换view.

右侧滑动DrawerLayout 实现左右滑动。

项目大体实现:

package me.xoder.neteasy.activity;

import android.app.ActionBar;

import android.app.FragmentTransaction;

import android.content.res.TypedArray;

import android.graphics.Color;

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

import android.support.v4.view.ViewPager;

import android.support.v4.widget.DrawerLayout;

import android.util.Log;

import android.view.Gravity;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.ImageView;

import java.lang.reflect.Method;

import me.xoder.neteasy.R;

import me.xoder.neteasy.adapter.TabContentPagerAdapter;

public class MainActivity extends FragmentActivity {

private ViewPager mViewPager;

private DrawerLayout slideMenu;

private ActionBar actionBar;

private TabContentPagerAdapter mPagerAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

actionBar = getActionBar();

mViewPager = (ViewPager) findViewById(R.id.view_pager);

slideMenu = (DrawerLayout) findViewById(R.id.slide_menu);

slideMenu.setScrimColor(Color.argb(50, 0, 0, 0));

mPagerAdapter = new TabContentPagerAdapter(getSupportFragmentManager());

mViewPager.setAdapter(mPagerAdapter);

mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

@Override

public void onPageSelected(int position) {

actionBar.setSelectedNavigationItem(position);

}

});

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

ActionBar.TabListener tabListener = new ActionBar.TabListener() {

@Override

public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {

mViewPager.setCurrentItem(tab.getPosition());

}

@Override

public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

}

@Override

public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

}

};

TypedArray tabIconIds = getResources().obtainTypedArray(R.array.actionbar_icons);

for (int i = 0; i

View view = getLayoutInflater().inflate(R.layout.actionbar_tab, null);

ImageView tabIcon = (ImageView) view.findViewById(R.id.actionbar_tab_icon);

tabIcon.setImageResource(tabIconIds.getResourceId(i, -1));

actionBar.addTab(actionBar.newTab().setCustomView(view).setTabListener(tabListener));

}

enableEmbeddedTabs(actionBar);

}

/**

* 在actionbar中内嵌Tab

*

* @param actionBar actionbar

*/

private void enableEmbeddedTabs(android.app.ActionBar actionBar) {

try {

Method setHasEmbeddedTabsMethod = actionBar.getClass().getDeclaredMethod("setHasEmbeddedTabs", boolean.class);

setHasEmbeddedTabsMethod.setAccessible(true);

setHasEmbeddedTabsMethod.invoke(actionBar, true);

} catch (Exception e) {

Log.v("enableEmbeddedTabs", e.getMessage().toString());

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if (id == R.id.action_search) {

// TODO: 2015-07-25 搜索界面

} else if (id == R.id.action_menu) {

// TODO: 2015-07-25 菜单选择

if (slideMenu.isDrawerOpen(Gravity.RIGHT)) {

slideMenu.closeDrawer(Gravity.RIGHT);

} else {

slideMenu.openDrawer(Gravity.RIGHT);

}

}

return true;

}

}

//

package me.xoder.neteasy.activity;

import android.annotation.TargetApi;

import android.app.ActionBar;

import android.os.Build;

import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentTransaction;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.FrameLayout;

import me.xoder.neteasy.R;

import me.xoder.neteasy.fragment.discover.fm.CoverFragment;

import me.xoder.neteasy.fragment.discover.fm.LyricFragment;

/**

* Created by alex.lee on 2015-07-29.

*/

public class PersonalFMActivity extends FragmentActivity {

private ActionBar actionBar;

private Fragment fgTo;

private Fragment fgCover;

private Fragment fgLyric;

private boolean fgFlag = false;

private FrameLayout frameContainer;

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_personal_fm);

actionBar = getActionBar();

actionBar.setTitle("私人FM");

actionBar.setDisplayShowTitleEnabled(true);

actionBar.setDisplayUseLogoEnabled(true);

actionBar.setDisplayHomeAsUpEnabled(true);

actionBar.setDisplayShowHomeEnabled(true);

actionBar.setLogo(R.drawable.actionbar_logo);

actionBar.setHomeAsUpIndicator(R.drawable.rdi_icn_arr);

if (fgCover == null) {

fgCover = new CoverFragment();

}

if (!fgCover.isAdded()) {

getSupportFragmentManager().beginTransaction().add(R.id.frame_fm_container, fgCover, CoverFragment.class.getSimpleName()).commit();

}

fgTo = fgCover;

frameContainer = (FrameLayout) findViewById(R.id.frame_fm_container);

frameContainer.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (fgFlag) {

if (fgCover == null) {

fgCover = new CoverFragment();

}

switchFragment(fgTo, fgCover);

} else {

if (fgLyric == null) {

fgLyric = new LyricFragment();

}

switchFragment(fgTo, fgLyric);

}

fgFlag = !fgFlag;

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_personal_fm, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

switch (id) {

case android.R.id.home:

finish();

break;

}

return true;

}

public void switchFragment(Fragment from, Fragment to) {

if (from == null || to == null || from == to) {

return;

}

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

transaction.setCustomAnimations(R.anim.abc_fade_in, R.anim.abc_fade_out);

if (!to.isAdded()) {

// 隐藏当前的fragment,add下一个到Activity中

transaction.hide(from).add(R.id.frame_fm_container, to).commit();

} else {

// 隐藏当前的fragment,显示下一个

transaction.hide(from).show(to).commit();

}

fgTo = to;

}

}

文章来源《IT蓝豹》android特效技术分享网站

java4android网易云_仿照网易云音乐界面 android特效相关推荐

  1. 仿照网易云音乐界面 android特效

    2019独角兽企业重金招聘Python工程师标准>>> 仿照网易云音乐界面 ,页面UI实现的听不错的,学习ui的朋友可以下载下来研究研究,android特效更多学习. 项目大体框架, ...

  2. 高仿网易云音乐界面 android特效

    仿照网易云音乐界面 ,页面UI实现的听不错的,学习ui的朋友可以下载下来研究研究, 项目大体框架,由ViewPager和TabContentPagerAdapter实现顶部的左右滑动切换view. 右 ...

  3. python怎么处理中英文符号网名_英文带符号的网名_英文网名带符号加中文

    导读:小编根据大家的需要整理了一份关于<英文带符号的网名_英文网名带符号加中文>的内容,具体内容: 很多人喜欢用一些带符号的英文作为自己的个性网名,下面请欣赏小编为大家整理的英文带符号的网 ...

  4. 口袋网咖已有服务器在使用怎么注销,口袋网咖_口袋网咖常见问题_口袋网咖专区...

    口袋网咖是专门为游戏高玩打造的手机变电脑软件,虚拟电脑神器,体验各种电脑游戏,非常的方便,能让小伙伴尽情的体验手机电脑的感觉,很多小伙伴在使用过程中遇到了一些问题,快啦网为大家分享口袋网咖常见问题,一 ...

  5. 口袋网咖已有服务器在使用怎么注销,口袋网咖_口袋网咖常见问题_口袋网咖推荐_快啦网...

    简介: 口袋网咖是专门为游戏高玩打造的手机变电脑软件,虚拟电脑神器,体验各种电脑游戏,对手机配置要求真的不高哦.快啦网为大家分享口袋网咖专区,一起来看看吧~ 口袋网咖介绍 口袋网咖免费版--用手机可以 ...

  6. 多人上传文件公共网盘_百度网盘带来文件收集功能 可设置后最多向500人收集文件并转存...

    百度网盘最近已经为网页版和客户端版带来文件收集功能,即生成特定的文件生成链接邀请其他用户提交文件等. 文件收集功能并不新鲜不过百度网盘倒是目前才支持 ,  据蓝点网测试该百度网盘文件收集功能最多支持5 ...

  7. 测试网速_手机网速测试排名出炉,华为表现意外,中兴才是王者

    人们对于5G的好奇热度似乎已经下降很多,不过目前5G仍然还没有实现更大范围的覆盖,同时基于5G的应用生态也没有完全建立,有网友调侃当下的"5G"最大作用就是测试网速,虽然很多网友在 ...

  8. python网易云_[Python] 网易云歌单/歌曲下载

    界面化 可以根据歌单 / 歌曲ID 下载 歌单/歌曲. eg: 歌单ID: https://music.163.com/#/playlist?id=3233380300 中的 3233380300 运 ...

  9. python百度网盘_百度网盘突然大调整,网友炸了..

    点击上方 "数据科学杂谈"关注公众号和我一起提升 然后点击右上角三个点,设为"星标",即使获取更多知识 来源:不正经程序员 转自:不正经程序员 近日,百度网盘在 ...

  10. 电脑如何测网速_测网速小常识

    在我们日常使用的一些测速软件时,里面的功能和名词可大家都知道是什么意思吗?不知道的可以看这里,下面我为大家科普一下吧,如下图: 图片来源于精准测速APP 上传:即上传速度,是指将手机或电脑里面的内容传 ...

最新文章

  1. CTF---Web入门第一题 what a fuck!这是什么鬼东西?
  2. mybatis_基础篇
  3. Java学习之Iterator(迭代器)的一般用法(转)
  4. 【读书笔记】原型模式代码(C++) 第一版
  5. 数据湖就是坑人的新概念?那些挖坑的企业,后来都怎么样了
  6. java 第三方jar推荐_java 开发第三方Jar包
  7. 如何实现微信公众号批量全部用户标签管理功能
  8. PCA 实践 利用 PCA 算法对人脸数据集内所有人进行降维和特征提取 PCA原理解析+代码
  9. 聊聊精密测量仪器的气源维护知识
  10. 动态3D特效壁纸软件Wallpaper Engine的免费获取及安装问题解决
  11. 博达交换机S2528PB常用配置命令
  12. 三个理由告诉你 为什么社保不能断缴
  13. java jcifs ntlm_Java 使用NTLM身份验证使用soap服务
  14. 【笔记】ARM架构和ARM芯片(三)
  15. (转)归江:投资,心平气和结硕果
  16. 微信编辑器都有什么功能?
  17. 玩儿转ffmeg的7个技巧
  18. shell脚本学习笔记 (流编辑器sed)
  19. vscode如何连接新设备_无人新零售的三大环节痛点,自助收银设备如何解决
  20. windows 密码破解法

热门文章

  1. 【ELMAN回归预测】基于matlab鲸鱼算法优化ELMAN回归预测【含Matlab源码 1667期】
  2. java程序猿面试问缺点怎么回答_面试程序员被问“你的缺点是什么”,我该怎么回答?...
  3. 申请计算机助理的英语作文,各位帮我找一篇英文申请信大学英语作文,申请助理..._口译笔译考试_帮考网...
  4. UT000054: The maximum size 1048576 for an individual file in a multipart req
  5. Matlab的对角阵、三角阵,矩阵变换:矩阵的转置、旋转、翻转、求逆、方阵的行列式、矩阵的秩求解
  6. 如何将b站视频从手机传输到电脑上
  7. Element-UI下拉框select实现拼音搜索
  8. chrome插件离线安装包(.crx)下载
  9. 微信网页授权只能配置一个域名
  10. linux目录更改权限不够,Linux中文件夹访问权限不足