Android專案(完整版+免費版)
阿新 • • 發佈:2021-02-05
技術標籤:Android學習app安卓javaandroid
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;
@Override
protected 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();
}
@Override
public 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};
@Override
protected 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() {
@Override
public 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;
}
@Override
public int getCount() {
return mDatas.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = mDatas.get(position);
container.addView(imageView);
return imageView;
}
@Override
public 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(){
@Override
public 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;
@Override
protected 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
複製這段內容後開啟百度網盤手機App,操作更方便哦
小夥伴們~ 由於程式碼量很大,需要完整的程式碼可以私信我哦~