1. 程式人生 > 其它 >Android專案(完整版+免費版)

Android專案(完整版+免費版)

技術標籤: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,操作更方便哦

小夥伴們~ 由於程式碼量很大,需要完整的程式碼可以私信我哦~