- 一、界面设计
- 二、功能实现
- 1.基本跳转
- 2.传入数据
- 3.结果展示
- 总结
一、界面设计
由头像所在的activity跳转到主页的activity
跳转后的页面设计如下:
主页层:利用ScrollView实现滚动文本框
歌曲层:目前还没做,计划采用recyclerview
二、功能实现 1.基本跳转
由于头像框所在的recyclerview与适配器的holder绑定,所以头像点击的监听同此前传值,可在绑定函数中实现。
//点击头像跳转到歌手主页
holder.imageView1.setonClickListener(new View.onClickListener(){
@Override
public void onClick(View view) {
Integer i=holder.getLayoutPosition();
Intent intent=new Intent(view.getContext(),SingerMainActivity1.class);
intent.putExtra("position",i.toString());
context.startActivity(intent);
}
});
在创建intent,要获取当前视图的context。此处采用带有传参的activity跳转,方便歌手页判断歌手对象,将数据导入歌手主页,从而不用建立多个activity来对应不同歌手。
2.传入数据建立一个歌手主页类,包含各类元素,方便建立list传值
public class SingerPage {
private int back;
private int photo;
private String name;
private String fans;
private String type;
private String intro;
public SingerPage(int back, int photo,String name,String fans,String type,String intro)
{
this.back=back;
this.photo=photo;
this.name=name;
this.fans=fans;
this.type=type;
this.intro=intro;
}
public int getBack()
{
return back;
}
public int getPhoto()
{
return photo;
}
public String getName()
{
return name;
}
public String getFans()
{
return fans;
}
public String getType()
{
return type;
}
public String getIntro()
{
return intro;
}
}
根据点击函数所在activity的传入值(每行的position值)确定主页的内容,此处list只添加了两个歌手主页作为示例。
ImageView ib=findViewById(R.id.imageView6);
ImageView ip=findViewById(R.id.imageView8);
TextView tname,tfans,ttype,tintro;
tname=findViewById(R.id.textView8);
tfans=findViewById(R.id.textView9);
ttype=findViewById(R.id.textView10);
List list=new ArrayList<>();
SingerPage SingerPage1 = new SingerPage(R.drawable.s1,R.drawable.pa,"痛仰乐队","102.3万粉丝","作词、作曲","成立于1999年的痛仰乐队(Miserable Faith)是当下中国享有声誉的摇滚乐队之一。 组队发行专辑及EP共六张 ,参加各类专场、音乐节演出数百场。2015年,痛仰签约中国最大的独立音乐公司摩登天空。2015年1月1日,乐队专辑《愿爱无忧》获得第六届中国摇滚迷笛奖最佳年度摇滚专辑。2016年9月22日,乐队发布单曲《午夜芭蕾》。2017年3月10日,痛仰乐队“今日青年”百城巡演启动。2018年7月,发布单曲《点石成金》;9月26日,宣布痛仰乐队“永不止步”2018年全国巡演成都站正式开演。2019年,推出歌曲《不是爱情的枪》。 2019年,参加原创音乐综艺节目《乐队的夏天》。2021年9月,乐队与摩登天空合约到期,从此工作事务由痛仰工作室独立运营。");
list.add(SingerPage1);
SingerPage SingerPage2 = new SingerPage(R.drawable.s2,R.drawable.pb,"福禄寿FloruitShow","50.1万粉丝","作词、作曲","福禄寿FloruitShow,是一支成立于2018年9月的中国内地独立乐队,由键盘/主唱豆豆(杜冰儿)、竖琴/吉他捏捏(杜雪儿)以及电子/打击乐咪咪(杜飞儿)三位成员组成。2019年,通过摩登天空旗下北河三音乐,福禄寿FloruitShow走上职业乐队的道路。福禄寿FloruitShow是一支成立于2018年9月的中国内地独立乐队,乐队由三胞胎姐妹杜冰儿、杜雪儿和杜飞儿组成。三姐妹均毕业于中国中央音乐学院 。其中,杜冰儿和杜飞儿毕业于作曲系,杜雪儿毕业于管弦系竖琴专业。在乐队中,豆豆杜冰儿担任键盘手和主唱,捏捏杜雪儿主要负责竖琴和吉他,咪咪杜飞儿主要负责合成器以及打击乐。");
list.add(SingerPage2);
Intent intent=getIntent();
String p=intent.getStringExtra("position");
SingerPage singerpage= (SingerPage) list.get(Integer.parseInt(p));
ib.setImageResource(singerpage.getBack());
ip.setImageResource(singerpage.getPhoto());
tname.setText(singerpage.getName());
tfans.setText(singerpage.getFans());
ttype.setText(singerpage.getType());
下面进行点击主页/歌曲的展示(页面切换)参考首次作业
tz=findViewById(R.id.textViewzhu);
ts=findViewById(R.id.textViewsong);
fragmentManager = getFragmentManager();
FragmentTransaction transaction=fragmentManager.beginTransaction();
transaction.add(R.id.singer_content,themeFragment);
transaction.add(R.id.singer_content,songFragment);
transaction.commit();
tz.setonClickListener(new View.onClickListener(){
@Override
public void onClick(View view) {
Show(0);
//写在此处才没有闪退
TextView t=findViewById(R.id.textView6);
t.setText(singerpage.getIntro());
}
});
ts.setonClickListener(new View.onClickListener(){
@Override
public void onClick(View view) {
Show(1);
}
});
private Fragment themeFragment=new themeFragment();
private Fragment songFragment=new songFragment();
FragmentManager fragmentManager;
TextView tz,ts;
private void Hide(FragmentTransaction transaction)
{
transaction.hide(themeFragment);
transaction.hide(songFragment);
}
private void Show(int i)
{
FragmentTransaction transaction=fragmentManager.beginTransaction();
Hide(transaction);
switch(i) {
case 0:
transaction.show(themeFragment);
tz.setTextColor(Color.rgb(0, 47, 167));
ts.setTextColor(Color.BLACK);
break;
case 1:
transaction.show(songFragment);
ts.setTextColor(Color.rgb(0, 47, 167));
tz.setTextColor(Color.BLACK);
break;
default:
break;
}
transaction.commit();
}
3.结果展示
总结
点击不同头像进入不同主页,开始想的是在绑定函数中判断item的position,跳转到不同的activity。但是这样太麻烦,需要建立许多activity,传值也不方便。然后想到带有传入值的activity跳转,将position作为传入值给歌手主页activity,同时作为list所取内容的下标,再将list的各个对象对应参数传给控件。
歌手简介在主页层展示,需要在点击“主页”函数中,给对应的textView进行赋值,在其他地方,app出现闪退的情况。
activity的传值,我开始用想直接获取整数发生错误,目前只能获取字符串再转为整数。
gitee源码



