目錄
一,項目介紹:
二,項目功能介紹
?????????1 查看星座
?????????2 星座匹配
?????????3 查看運勢
????????4 本軟件介紹?
三,核心代碼
(1)首頁Mactivity核心代碼
(2)首頁查看星座
(3)星座的匹配
??(4)查看運勢
?????????(5)本軟件介紹
四,項目源碼
一,項目介紹:
? ? ? ? 本項目由4個功能:第1個是查看各個星座的詳情頁;第2個是匹配你的星座的另一半星座;第3個是查看運勢,查看你的星座的運勢,看你的事業(yè)運勢;愛情運勢等等,第4查看本軟件的介紹,并且可以選擇自己的星座;
二,項目功能介紹
?1 查看星座
圖1.1:所述←
首頁星座卡看頁←
?圖1.2:所述←
選擇金牛座,查看金牛座的詳情頁
?圖1.3:所述←
該圖可以看到金牛座的性格特點,幸運號碼,相匹配的金屬等等信息←
?2 星座匹配
?圖2.1:所述
該圖為星座匹配布局頁
?圖2.2:所述←
選擇好男生和女生對應的星座后,開始匹配←
圖2.3:所述←
該圖:顯示不同星座對應的匹配顯示的匹配評分,解析等等內容,這些數據皆來自
于星座接口API←
?3 查看運勢
圖3.1:所述
選擇運勢的按鈕,將頁面跳轉到運勢頁
圖3.2:所述←
查看金牛座,查看金牛座的運勢詳情頁
圖3.3:所述←
查看金牛座的詳情頁,可以查看綜合運勢,愛情運勢,事業(yè)學業(yè)等等<
?
4 本軟件介紹?
?圖4.1:所述←
這里是關于用戶自己所屬的星座和本軟件的介紹←
三,核心代碼
(1)首頁Mactivity核心代碼
package com.animee.constellation;
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.animee.constellation.bean.StarBean;
import com.animee.constellation.luckfrag.LuckFragment;
import com.animee.constellation.mefrag.MeFragment;
import com.animee.constellation.parnterfrag.PartnerFragment;
import com.animee.constellation.starfrag.StarFragment;
import com.animee.constellation.utils.AssetsUtils;
import com.google.gson.Gson;
/**
* (1)創(chuàng)建整個布局
*/
public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {
RadioGroup mainRg;
// 聲明四個按鈕對應的Fragment對象
Fragment starFrag,luckFrag,partnerFrag,meFrag;
private FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_01);
mainRg = findViewById(R.id.main_rg);
// 設置監(jiān)聽點擊了哪個單選按鈕
mainRg.setOnCheckedChangeListener(this);
// 加載星座相關數據 /assets/xzcontent/xzcontent.json
StarBean infoBean = loadData();
Bundle bundle = new Bundle();
bundle.putSerializable("info",infoBean);
// 創(chuàng)建碎片對象
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進行動態(tài)加載,一起加載到布局當中。replace add/hide/show
addFragmentPage();
}
/* 讀取assets文件夾下的xzcontent.json文件*/
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;
}
/**
* (1)
* @des 將主頁當中的碎片一起加載進入布局,有用的顯示,暫時無用的隱藏
* */
private void addFragmentPage() {
// 1.創(chuàng)建碎片管理者對象
manager = getSupportFragmentManager();
// 2.創(chuàng)建碎片處理事務的對象
FragmentTransaction transaction = manager.beginTransaction();
// 3.將四個Fragment統(tǒng)一的添加到布局當中
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_partner:
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();
}
}
activity_main_01.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/main_tv_title"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="@string/app_name"
android:background="@color/lightyellow"
android:gravity="center"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="@color/pink"/>
<RadioGroup
android:id="@+id/main_rg"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal"
android:background="@color/lightyellow"
android:layout_alignParentBottom="true"
android:padding="5dp">
<RadioButton
android:id="@+id/main_rb_star"
style="@style/main_rb"
android:drawableTop="@drawable/main_rb_star"
android:text="@string/label_star"
android:checked="true"/>
<RadioButton
android:id="@+id/main_rb_partner"
style="@style/main_rb"
android:text="@string/label_parnter"
android:drawableTop="@drawable/main_rb_parnter"/>
<RadioButton
android:id="@+id/main_rb_luck"
style="@style/main_rb"
android:text="@string/label_luck"
android:drawableTop="@drawable/main_rb_luck"/>
<RadioButton
android:id="@+id/main_rb_me"
style="@style/main_rb"
android:text="@string/label_me"
android:drawableTop="@drawable/main_rb_me"/>
</RadioGroup>
<!-- 中間部分使用布局進行占位,會去使用Fragment替換這塊布局-->
<LinearLayout
android:id="@+id/main_layout_center"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_below="@id/main_tv_title"
android:layout_above="@id/main_rg"/>
</RelativeLayout>
(2)首頁查看星座
package com.animee.constellation.starfrag;
import androidx.appcompat.app.AppCompatActivity;
import de.hdodenhof.circleimageview.CircleImageView;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.animee.constellation.R;
import com.animee.constellation.bean.StarBean;
import com.animee.constellation.utils.AssetsUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* (1)星座布局---調用layout頁面
*/
public class StarAnalysisActivity extends AppCompatActivity implements View.OnClickListener {
TextView titleTv;
ImageView backIv;
CircleImageView iconIv;
TextView nameTv,dateTv;
ListView analysisLv;
StarBean.StarinfoBean bean;
private Map<String, Bitmap> contentlogoImgMap;
private TextView footerTv; //ListView底部布局當中需要改變的TextView
List<StarAnalysisBean>mDatas;
private AnalysisBaseAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_star_analysis_01);
// 獲取上一級界面?zhèn)鬟f過來的數據
Intent intent = getIntent();
bean = (StarBean.StarinfoBean) intent.getSerializableExtra("star");
initView();
mDatas = new ArrayList<>(); //初始化顯示在ListView上的數據源
adapter = new AnalysisBaseAdapter(this, mDatas);
analysisLv.setAdapter(adapter);
addDataToList();
}
/* 加載ListView當中的數據源內容*/
private void addDataToList() {
StarAnalysisBean sab1 = new StarAnalysisBean("性格特點 :", bean.getTd(), R.color.lightblue);
StarAnalysisBean sab2 = new StarAnalysisBean("掌管宮位 :", bean.getGw(), R.color.lightpink);
StarAnalysisBean sab3 = new StarAnalysisBean("顯陰陽性 :", bean.getYy(), R.color.lightgreen);
StarAnalysisBean sab4 = new StarAnalysisBean("最大特征 :", bean.getTz(), R.color.purple);
StarAnalysisBean sab5 = new StarAnalysisBean("主管星球 :", bean.getZg(), R.color.orange);
StarAnalysisBean sab6 = new StarAnalysisBean("幸運顏色 :", bean.getYs(), R.color.colorAccent);
StarAnalysisBean sab7 = new StarAnalysisBean("搭配珠寶 :", bean.getZb(), R.color.colorPrimary);
StarAnalysisBean sab8 = new StarAnalysisBean("幸運號碼 :", bean.getHm(), R.color.grey);
StarAnalysisBean sab9 = new StarAnalysisBean("相配金屬 :", bean.getJs(), R.color.darkblue);
mDatas.add(sab1);
mDatas.add(sab2);
mDatas.add(sab3);
mDatas.add(sab4);
mDatas.add(sab5);
mDatas.add(sab6);
mDatas.add(sab7);
mDatas.add(sab8);
mDatas.add(sab9);
// 數據源發(fā)生變化,提示適配器更新
adapter.notifyDataSetChanged();
}
/* 初始化控件*/
private void initView() {
titleTv = findViewById(R.id.title_tv);
backIv = findViewById(R.id.title_iv_back);
iconIv = findViewById(R.id.staranalysis_iv);
nameTv = findViewById(R.id.staranalysis_tv_name);
dateTv = findViewById(R.id.staranalysis_tv_date);
analysisLv = findViewById(R.id.staranalysis_lv);
// 為ListView添加底部布局
View footerView = LayoutInflater.from(this).inflate(R.layout.footer_star_analysis_01, null);
analysisLv.addFooterView(footerView);
footerTv = footerView.findViewById(R.id.footerstar_tv_info);
// 將數據進行顯示
titleTv.setText("星座詳情");
backIv.setOnClickListener(this);
nameTv.setText(bean.getName());
dateTv.setText(bean.getDate());
contentlogoImgMap = AssetsUtils.getContentlogoImgMap();
Bitmap bitmap = contentlogoImgMap.get(bean.getLogoname());
iconIv.setImageBitmap(bitmap);
footerTv.setText(bean.getInfo());
}
@Override
public void onClick(View v) {
finish();
}
}
activity_info_list_02.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/bgyellow"
tools:context=".starfrag.StarAnalysisActivity">
<include layout="@layout/title_layout_01"/>
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/staranalysis_iv"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="40dp"
android:layout_gravity="center"
app:civ_border_color="@color/lightpink"
app:civ_border_width="2dp"
android:src="@mipmap/ic_launcher"/>
<TextView
android:id="@+id/staranalysis_tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="10dp"
android:textSize="16sp"
android:textStyle="bold"
android:text="白羊座"/>
<TextView
android:id="@+id/staranalysis_tv_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="10dp"
android:textSize="16sp"
android:textStyle="bold"
android:text="3月21日--4月19日"
android:background="@color/lightpink"
android:textColor="@color/white"/>
<ListView
android:id="@+id/staranalysis_lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp"
android:divider="@null"
android:dividerHeight="0dp"
android:scrollbars="none"/>
</LinearLayout>
(3)星座的匹配
package com.animee.constellation.parnterfrag;
import androidx.appcompat.app.AppCompatActivity;
import de.hdodenhof.circleimageview.CircleImageView;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.animee.constellation.R;
import com.animee.constellation.utils.AssetsUtils;
import com.animee.constellation.utils.LoadDataAsyncTask;
import com.animee.constellation.utils.URLContent;
import com.google.gson.Gson;
import java.util.Map;
/**
* (2)星座配對---調用layout
*/
public class ParnterAnalysisActivity extends AppCompatActivity implements LoadDataAsyncTask.OnGetNetDataListener, View.OnClickListener {
TextView manTv,womanTv,pdTv,vsTv,pfTv,bzTv,jxTv,zyTv,titleTv;
CircleImageView manIv,womanIv;
ImageView backIv;
private String man_name;
private String man_logoname;
private String woman_name;
private String woman_logoname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_parnter_analysis_02);
initView();
// 接收上一個頁面?zhèn)鬟f的數值
getLastData();
// 獲取網絡路徑地址
String parnterURL = URLContent.getParnterURL(man_name, woman_name);
// 加載網絡數據
// 1.創(chuàng)造自定義的異步任務的對象
LoadDataAsyncTask task = new LoadDataAsyncTask(this, this, true);
// 2.執(zhí)行異步任務
task.execute(parnterURL);
}
@Override
public void onSuccess(String json) {
// 解析數據
if (!TextUtils.isEmpty(json)) {
ParnterAnalysisBean analysisBean = new Gson().fromJson(json, ParnterAnalysisBean.class);
ParnterAnalysisBean.ResultBean resultBean = analysisBean.getResult();
pfTv.setText("配對評分: "+resultBean.getZhishu()+" "+resultBean.getJieguo());
bzTv.setText("星座比重: "+resultBean.getBizhong());
jxTv.setText("解析:\n\n"+resultBean.getLianai());
zyTv.setText("注意事項:\n\n"+resultBean.getZhuyi());
}
}
private void getLastData() {
Intent intent = getIntent();
man_name = intent.getStringExtra("man_name");
man_logoname = intent.getStringExtra("man_logoname");
woman_name = intent.getStringExtra("woman_name");
woman_logoname = intent.getStringExtra("woman_logoname");
// 設置能夠顯示的控件的信息
Map<String, Bitmap> contentlogoImgMap =
AssetsUtils.getContentlogoImgMap();
Bitmap manBitmap = contentlogoImgMap.get(man_logoname);
manIv.setImageBitmap(manBitmap);
Bitmap womanBitmap = contentlogoImgMap.get(woman_logoname);
womanIv.setImageBitmap(womanBitmap);
manTv.setText(man_name);
womanTv.setText(woman_name);
pdTv.setText("星座配對-"+man_name+"和"+woman_name+"配對");
vsTv.setText(man_name+" vs "+woman_name);
}
private void initView() {
manIv = findViewById(R.id.parnteranalysis_iv_man);
womanIv = findViewById(R.id.parnteranalysis_iv_woman);
backIv = findViewById(R.id.title_iv_back);
manTv = findViewById(R.id.parnteranalysis_tv_man);
womanTv = findViewById(R.id.parnteranalysis_tv_woman);
pdTv = findViewById(R.id.parnteranalysis_tv_pd);
vsTv = findViewById(R.id.parnteranalysis_tv_vs);
pfTv = findViewById(R.id.parnteranalysis_tv_pf);
bzTv = findViewById(R.id.parnteranalysis_tv_bz);
jxTv= findViewById(R.id.parnteranalysis_tv_jx);
zyTv = findViewById(R.id.parnteranalysis_tv_zy);
titleTv = findViewById(R.id.title_tv);
backIv.setOnClickListener(this);
titleTv.setText("配對詳情");
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.title_iv_back:
finish();
break;
}
}
}
fragment_partner_02.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp"
android:background="@color/bgyellow"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal"
android:layout_margin="10dp"
android:background="@drawable/parnter_man">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/man"
android:textSize="18sp"
android:textStyle="bold"
android:gravity="center"
android:textColor="@color/white"/>
<ImageView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="10dp"
android:id="@+id/parnterfrag_iv_man"/>
<Spinner
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center_vertical"
android:id="@+id/parnterfrag_sp_man"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal"
android:layout_margin="10dp"
android:background="@drawable/parnter_woman">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/woman"
android:textSize="18sp"
android:textStyle="bold"
android:gravity="center"
android:textColor="@color/white"/>
<ImageView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="10dp"
android:id="@+id/parnterfrag_iv_woman"/>
<Spinner
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center_vertical"
android:id="@+id/parnterfrag_sp_woman"/>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textSize="16sp"
android:text="@string/parnter_info"/>
<Button
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="@string/parnter_btn_prize"
android:layout_gravity="center"
android:layout_marginTop="150dp"
android:background="@drawable/dock"
android:id="@+id/parnterfrag_btn_prize"/>
<Button
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="@string/parnter_btn_analysis"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:background="@drawable/dock"
android:id="@+id/parnterfrag_btn_analysis"/>
</LinearLayout>
(4)查看運勢
package com.animee.constellation.luckfrag;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.animee.constellation.R;
import com.animee.constellation.utils.LoadDataAsyncTask;
import com.animee.constellation.utils.URLContent;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
/**
* (3)星座運勢---調用layout
*/
public class LuckAnalysisActivity extends AppCompatActivity implements View.OnClickListener,LoadDataAsyncTask.OnGetNetDataListener {
ListView luckLv;
TextView nameTv;
ImageView backIv;
List<LuckItemBean>mDatas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_luck_analysis_03);
Intent intent = getIntent();
String name = intent.getStringExtra("name"); //獲取上一級界面?zhèn)鬟f的星座名詞
// 獲取網址
String luckURL = URLContent.getLuckURL(name);
initView(name);
mDatas = new ArrayList<>();
// 獲取網絡請求
LoadDataAsyncTask task = new LoadDataAsyncTask(this, this, true);
task.execute(luckURL);
}
private void initView(String name) {
// 查找控件
luckLv = findViewById(R.id.luckanalysis_lv);
nameTv = findViewById(R.id.title_tv);
backIv = findViewById(R.id.title_iv_back);
nameTv.setText(name);
backIv.setOnClickListener(this);
}
// 獲取網絡數據成功時會回調的方法
@Override
public void onSuccess(String json) {
if (!TextUtils.isEmpty(json)) {
// 數據的解析
LuckBean luckBean = new Gson().fromJson(json, LuckBean.class);
// 為了顯示在ListView上,重新整理數據,整理成集合的形式
addDataToList(luckBean);
// 設置適配器
LuckAnalysisAdapter adapter = new LuckAnalysisAdapter(this, mDatas);
luckLv.setAdapter(adapter);
}
}
/* 整理數據到集合當中*/
private void addDataToList(LuckBean luckBean) {
LuckItemBean lib1 = new LuckItemBean("綜合運勢",luckBean.getMima().getText().get(0), Color.BLUE);
LuckItemBean lib2 = new LuckItemBean("愛情運勢",luckBean.getLove().get(0),Color.GREEN);
LuckItemBean lib3 = new LuckItemBean("事業(yè)學業(yè)",luckBean.getCareer().get(0),Color.GRAY);
LuckItemBean lib4 = new LuckItemBean("健康運勢",luckBean.getHealth().get(0),Color.RED);
LuckItemBean lib5 = new LuckItemBean("財富運勢",luckBean.getFinance().get(0),Color.BLACK);
mDatas.add(lib1);
mDatas.add(lib2);
mDatas.add(lib3);
mDatas.add(lib4);
mDatas.add(lib5);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.title_iv_back:
finish();
break;
}
}
}
activity_luck_analysis_03.xml文章來源:http://www.zghlxwxcb.cn/news/detail-481750.html
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/bgyellow">
<include layout="@layout/title_layout_01"/>
<ListView
android:id="@+id/luckanalysis_lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@null"
android:dividerHeight="0dp"
android:scrollbars="none"
android:layout_margin="20dp"/>
</LinearLayout>
(5)本軟件介紹
package com.animee.constellation.mefrag;
import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import de.hdodenhof.circleimageview.CircleImageView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.TextView;
import com.animee.constellation.R;
import com.animee.constellation.bean.StarBean;
import com.animee.constellation.luckfrag.LuckBaseAdapter;
import com.animee.constellation.utils.AssetsUtils;
import java.util.List;
import java.util.Map;
/**
* (4)我自己的版本-----調用layuout
* A simple {@link Fragment} subclass.
*/
public class MeFragment extends Fragment implements View.OnClickListener {
CircleImageView iconIv;
TextView nameTv;
private Map<String, Bitmap> imgMap;
private List<StarBean.StarinfoBean> mDatas;
private SharedPreferences star_pref;
// 保存選擇的星座位置
int selectPos = 0;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 獲取activity傳遞的數據
Bundle bundle = getArguments();
StarBean infoBean = (StarBean) bundle.getSerializable("info");
mDatas = infoBean.getStarinfo();
star_pref = getContext().getSharedPreferences("star_pref", Context.MODE_PRIVATE);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_me_04, container, false);
iconIv = view.findViewById(R.id.mefrag_iv);
nameTv = view.findViewById(R.id.mefrag_tv_name);
iconIv.setOnClickListener(this);
// 進行初始化設置
imgMap = AssetsUtils.getContentlogoImgMap();
// 讀取共享參數當中保存的星座名稱和logo名稱
String name = star_pref.getString("name", "白羊座");
String logoname = star_pref.getString("logoname", "baiyang");
Bitmap bitmap = imgMap.get(logoname);
iconIv.setImageBitmap(bitmap);
nameTv.setText(name);
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.mefrag_iv:
showDialog();
break;
}
}
/**
* (4)顯示自己的星座
*/
private void showDialog() {
final Dialog dialog = new Dialog(getContext());
View dialogView = LayoutInflater.from(getContext()).inflate(R.layout.me_dialog_04,null);
dialog.setContentView(dialogView);
dialog.setTitle("請選擇您的星座:");
GridView dialogGv = dialogView.findViewById(R.id.mefrag_dialog_gv);
// 設置適配器
LuckBaseAdapter adapter = new LuckBaseAdapter(getContext(),mDatas);
dialogGv.setAdapter(adapter);
// 設置能否被取消
dialog.setCancelable(true);
// 設置點擊彈出框的外部,可以取消彈出框
dialog.setCanceledOnTouchOutside(true);
// 設置gridview每一項的點擊事件
dialogGv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
StarBean.StarinfoBean bean = mDatas.get(position);
String name = bean.getName();
String logoname = bean.getLogoname();
nameTv.setText(name);
Bitmap bitmap = imgMap.get(logoname);
iconIv.setImageBitmap(bitmap);
selectPos = position; //保存選擇的位置
dialog.cancel();
}
});
dialog.show();
}
@Override
public void onPause() {
super.onPause();
StarBean.StarinfoBean bean = mDatas.get(selectPos);
String name = bean.getName();
String logoname = bean.getLogoname();
SharedPreferences.Editor editor = star_pref.edit(); // 獲取向共享參數中寫入數據的對象
editor.putString("name",name);
editor.putString("logoname",logoname);
editor.commit();
}
}
fragment_me_04.xml文章來源地址http://www.zghlxwxcb.cn/news/detail-481750.html
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bgyellow"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/mefrag_iv"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="50dp"
app:civ_border_width="2dp"
app:civ_border_color="@color/grey"/>
<TextView
android:id="@+id/mefrag_tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="白羊座"
android:textSize="18sp"
android:textStyle="bold"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="50dp"
android:layout_marginTop="10dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<View
android:layout_width="4dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorAccent"
android:layout_marginLeft="40dp"
android:layout_marginRight="10dp"/>
<TextView
android:id="@+id/mefrag_tv_about"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/about_app"
android:textSize="20sp"
android:gravity="center|left"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/white"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<View
android:layout_width="4dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorAccent"
android:layout_marginLeft="40dp"
android:layout_marginRight="10dp"/>
<TextView
android:id="@+id/mefrag_tv_function"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/function"
android:textSize="20sp"
android:gravity="center|left"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/white"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<View
android:layout_width="4dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorAccent"
android:layout_marginLeft="40dp"
android:layout_marginRight="10dp"/>
<TextView
android:id="@+id/mefrag_tv_update"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/update"
android:textSize="20sp"
android:gravity="center|left"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/white"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<View
android:layout_width="4dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="@color/colorAccent"
android:layout_marginLeft="40dp"
android:layout_marginRight="10dp"/>
<TextView
android:id="@+id/mefrag_tv_feedback"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/feedback"
android:textSize="20sp"
android:gravity="center|left"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/white"/>
</LinearLayout>
四,項目源碼
? ? ? ? 項目源碼:放在評論區(qū)里
到了這里,關于安卓期末項目:星座App的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!