Android项目–关于星座相关的app
第一部分–界面效果图
- 页面一:(点击页面任意一个星座图标会显示相应的数据)
- 页面二:(可以更换男生或女生的星座,点击开始配对分析,能跳转相应的页面,并显示相应的数据分析)
- 页面三:(点击任意一个图标,跳转到相应的页面,展示这一年的运势数据)
- 页面四:(点击头像,能更换相应的星座,下一次登录,仍然会保存)
第二部分–图片素材
以下是百度网盘的链接:
链接:https://pan.baidu.com/s/1vbtOJNS-I2Lm1JXXxumZSg
提取码:1111
第三部分–部分代码
- XingZuoWeb
(我的项目名称)—>app
—>src
—>main
–>java
–>com.example.xingzuoweb
(自己创建的包名)–>MainActivity
package com.example.xingzuoweb;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import android.os.Bundle;
import android.widget.RadioGroup;
import com.example.xingzuoweb.bean.StarBean;
import com.example.xingzuoweb.luckfrag.LuckFragment;
import com.example.xingzuoweb.mefrag.MeFragment;
import com.example.xingzuoweb.parnterfrag.PartnerFragment;
import com.example.xingzuoweb.starfrag.StarFragment;
import com.example.xingzuoweb.utils.AssetsUtils;
import com.google.gson.Gson;
public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener{RadioGroup mainRg;//声明四个按钮对应的Fragment对象Fragment starFrag,luckFrag,partnerFrag,meFrag;private FragmentManager manager;private FragmentTransaction fragmentTransaction;private FragmentTransaction transaction;private FragmentTransaction fragmentTransaction1;private Object FragmentTransaction;private String jsonFromAssets;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mainRg = findViewById(R.id.main_rg);//设置监听器点击了哪个单选按钮mainRg.setOnCheckedChangeListener(this);//加载星座的数据StarBean infoBean = loadData();Bundle bundle = new Bundle();bundle.putSerializable("info",infoBean);//创建碎片对象starFrag = new StarFragment();starFrag.setArguments(bundle);luckFrag = new LuckFragment();luckFrag.setArguments(bundle);partnerFrag = new PartnerFragment();partnerFrag.setArguments(bundle);meFrag = new MeFragment();meFrag.setArguments(bundle);//将四个Fragment进行动态加载,一起加载到布局当中。addFragmentPage();}//读取assets下的文件private StarBean loadData() {String json = AssetsUtils.getJsonFromAssets(this, "xzcontent/xzcontent.json");Gson gson = new Gson();StarBean infoBean = gson.fromJson(json, StarBean.class);AssetsUtils.saveBitmapFromAssets(this,infoBean);return infoBean;}//将主页当中的碎片一起加载进入布局,有用的显示,暂时无用的隐藏。private void addFragmentPage() {//1.创建碎片管理者对象manager = getSupportFragmentManager();//2.创建碎片处理事务的对象FragmentTransaction transaction = manager.beginTransaction();//3.将四个Fragment统一的添加到布局当中transaction.add(R.id.main_layout_center,starFrag);transaction.add(R.id.main_layout_center,partnerFrag);transaction.add(R.id.main_layout_center,luckFrag);transaction.add(R.id.main_layout_center,meFrag);//4.隐藏后面的三个transaction.hide(partnerFrag);transaction.hide(luckFrag);transaction.hide(meFrag);//5.提交碎片改变后的事务transaction.commit();}@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {FragmentTransaction transaction = manager.beginTransaction();switch (checkedId){case R.id.main_rb_star:transaction.hide(partnerFrag);transaction.hide(luckFrag);transaction.hide(meFrag);transaction.show(starFrag);break;case R.id.main_rb_parnter:transaction.hide(starFrag);transaction.hide(luckFrag);transaction.hide(meFrag);transaction.show(partnerFrag);break;case R.id.main_rb_luck:transaction.hide(starFrag);transaction.hide(partnerFrag);transaction.hide(meFrag);transaction.show(luckFrag);break;case R.id.main_rb_me:transaction.hide(starFrag);transaction.hide(luckFrag);transaction.hide(partnerFrag);transaction.show(meFrag);break;}transaction.commit();}
}
com.example.xingzuoweb
—>bean
(自己创建的包)—>StarBean
package com.example.xingzuoweb.bean;import java.io.Serializable;
import java.util.List;public class StarBean implements Serializable {private List<StarinfoBean> starinfo;public List<StarinfoBean> getStarinfo() {return starinfo;}public void setStarinfo(List<StarinfoBean> starinfo) {this.starinfo = starinfo;}public static class StarinfoBean implements Serializable{/*** logoname : baiyang* name : 白羊座* date : 3月21日-4月19日* td : 热情活力* gw : 第一宫* yy : 阳性* tz : 控制* zg : 火星* ys : 红色* zb : 红宝石* hm : 5* js : 铁* info : 白羊座有一种让人看见就觉得开心的感觉,因为总是看起来都是那么地热情、阳光、乐观、坚强,对朋友也慷概大方,性格直来直往,就是有点小脾气。白羊男有大男人主义的性格,而白羊女就是女汉子的形象。*/private String logoname;private String name;private String date;private String td;private String gw;private String yy;private String tz;private String zg;private String ys;private String zb;private String hm;private String js;private String info;public String getLogoname() {return logoname;}public void setLogoname(String logoname) {this.logoname = logoname;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDate() {return date;}public void setDate(String date) {this.date = date;}public String getTd() {return td;}public void setTd(String td) {this.td = td;}public String getGw() {return gw;}public void setGw(String gw) {this.gw = gw;}public String getYy() {return yy;}public void setYy(String yy) {this.yy = yy;}public String getTz() {return tz;}public void setTz(String tz) {this.tz = tz;}public String getZg() {return zg;}public void setZg(String zg) {this.zg = zg;}public String getYs() {return ys;}public void setYs(String ys) {this.ys = ys;}public String getZb() {return zb;}public void setZb(String zb) {this.zb = zb;}public String getHm() {return hm;}public void setHm(String hm) {this.hm = hm;}public String getJs() {return js;}public void setJs(String js) {this.js = js;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}}
}
com.example.xingzuoweb
—>home
-->GuideActivity
package com.example.xingzuoweb.home;import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;import com.example.xingzuoweb.MainActivity;
import com.example.xingzuoweb.R;import java.util.ArrayList;
import java.util.List;public class GuideActivity extends AppCompatActivity {ViewPager guideVp;List<ImageView>mDatas;//存放三张图片的地址int resIds[] = {R.mipmap.loading1,R.mipmap.loading2,R.mipmap.loading3};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_guide);guideVp = findViewById(R.id.guide_vp);mDatas = new ArrayList<>();initPager();//为第三个图片设置监听事件setListener();}private void setListener() {int size = mDatas.size();ImageView view = mDatas.get(size-1);view.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(GuideActivity.this, MainActivity.class);startActivity(intent);finish();}});}private void initPager() {for (int i= 0;i<resIds.length;i++){ImageView imageView = new ImageView(this);imageView.setImageResource(resIds[i]);imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);imageView.setLayoutParams(lp);mDatas.add(imageView);}GuideAdapter adapter = new GuideAdapter(mDatas);//设置适配器guideVp.setAdapter(adapter);}
}
com.example.xingzuoweb
—>home
-->GuideAdapter
package com.example.xingzuoweb.home;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;import java.util.List;public class GuideAdapter extends PagerAdapter {List<ImageView>mDatas;public GuideAdapter(List<ImageView> mDatas) {this.mDatas = mDatas;}@Overridepublic int getCount() {return mDatas.size();}@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view==object;}@NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {ImageView imageView = mDatas.get(position);container.addView(imageView);return imageView;}@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {ImageView imageView = mDatas.get(position);container.removeView(imageView);}
}
- com.example.xingzuoweb
—> home
—>WelcomeActivity
package com.example.xingzuoweb.home;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;import com.example.xingzuoweb.MainActivity;
import com.example.xingzuoweb.R;
public class WelcomeActivity extends AppCompatActivity {TextView tv;int count = 3;Handler handler = new Handler(){@Overridepublic void handleMessage(@NonNull Message msg) {if (msg.what==1){count--;if (count==0){//判断是否是第一次进入应用,如果是第一次进入此应用,跳转到引导页面boolean isFirst = pref.getBoolean("isFirst",true);Intent intent = new Intent();if (isFirst){intent.setClass(WelcomeActivity.this,GuideActivity.class);SharedPreferences.Editor editor = pref.edit();editor.putBoolean("isFirst",false);editor.commit();}else {intent.setClass(WelcomeActivity.this,MainActivity.class);}startActivity(intent);finish();}else {tv.setText(String.valueOf(count));handler.sendEmptyMessageDelayed(1,500);}}}};private SharedPreferences pref;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_welcome);tv = findViewById(R.id.welcome_tv);pref = getSharedPreferences("first_pref", MODE_PRIVATE);handler.sendEmptyMessageDelayed(1,500);}
}
第四部分–打包后的apk
以下是百度网盘的链接:
点击链接即可下载:https://pan.baidu.com/s/1u0iUk5glF11BRy-bYHub6g
提取码:1111
小伙伴们~ 由于代码量很大,需要完整的代码可以点击链接:XingZuoWeb.zip 进行下载哦~
留言:如果对你有帮助,给博主点个免费的赞吧 ~ 创作不易,感谢支持!