hayden 2 years ago
parent 74810e5586
commit 097c4a7f16

@ -8,7 +8,7 @@ android {
defaultConfig {
applicationId "com.example.myapplication"
minSdk 21
minSdk 25
targetSdk 33
versionCode 1
versionName "1.0"
@ -33,6 +33,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'androidx.wear.tiles:tiles-material:1.1.0-alpha04'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

@ -7,36 +7,34 @@
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@drawable/app_icon"
android:roundIcon="@drawable/app_icon"
android:label="@string/app_name"
android:roundIcon="@drawable/app_icon"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:targetApi="31">
<activity
android:name=".IdolTagMainActivity"
android:exported="true" />
<activity
android:name=".FragmentStaticActivity"
android:exported="true" /> <!-- 登录页面 -->
<activity
android:name=".LoginActivity"
android:exported="true">
<intent-filter>
<!-- app启动时的入口-->
<!-- app启动时的入口 -->
<action android:name="android.intent.action.MAIN" />
<!-- 在桌面上显示qpp图标-->
<!-- 在桌面上显示qpp图标 -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</activity> <!-- 注册页面 -->
<activity
android:name=".RigsterActivity"
android:exported="true">
</activity>
android:exported="true" /> <!-- 我的页面 -->
<activity
android:name=".MineActivity"
android:exported="true">
</activity>
android:exported="true" />
</application>
</manifest>

@ -0,0 +1,105 @@
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.ListView;
import com.example.myapplication.adapter.IdolAdapter;
import com.example.myapplication.bean.Tag;
import com.example.myapplication.fragment.ShowFragment;
import java.util.ArrayList;
import java.util.List;
public class IdolTagMainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
ListView mListview;
FrameLayout mFrame;
List<Tag> mlist = new ArrayList();//Listview的数据集合
List<Fragment> fragmentList = new ArrayList<>(); //用于存放碎片设置多个碎片的原因是右侧有很多显示都要fragment
IdolAdapter idolAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_idol_tag_main);
initView();
initDate();
}
//控件初始化
private void initView(){
mListview = findViewById(R.id.mListview);
mFrame = findViewById(R.id.mFrame);
}
//初始化数据
private void initDate(){
//初始化数据结合
listViewDate();
//加载fragment
addFragment();
//默认选中页面0
replese(0);
}
//切换fragment
private void replese(int position) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//隐藏所有的fragment
for(int i = 0; i < fragmentList.size(); i++){
Fragment fragment = fragmentList.get(i);
transaction.hide(fragment);
}
transaction.show(fragmentList.get(position));
transaction.commit();
}
//加载fragment
private void addFragment() {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//new一个ShowFragment是为了调用里面的ShowFragment方法
ShowFragment showFragment = new ShowFragment();
for(int i = 0; i < mlist.size(); i++){
Fragment fragment = showFragment.getShowFragment(mlist.get(i).getType());
fragmentList.add(fragment);
}
for(int i = 0; i < fragmentList.size(); i++){
transaction.add(R.id.mFrame, fragmentList.get(i));
}
transaction.commit();
}
//初始化数据结合
private void listViewDate() {
mlist.add(new Tag("最佳男歌手"));
mlist.add(new Tag("最佳女歌手"));
mlist.add(new Tag("最佳男团"));
mlist.add(new Tag("最佳女团"));
idolAdapter = new IdolAdapter(mlist,this);
mListview.setAdapter(idolAdapter);
mListview.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
//点击item切换fragment
replese(position);
for(int i = 0; i < mlist.size(); i++){
//先将所有的item标记为未被选中
mlist.get(i).setChecked(false);
}
//找出被选中的item把idol中的的ischecked属性改为true
mlist.get(position).setChecked(true);
//刷新适配器
idolAdapter.notifyDataSetChanged();
}
}

@ -15,7 +15,7 @@ public class LoginActivity extends AppCompatActivity implements View.OnClickList
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_login);
findViewById(R.id.login).setOnClickListener(this);
findViewById(R.id.login).setOnClickListener(this); //给login图标添加监听器
findViewById(R.id.rigster).setOnClickListener(this);
}
@ -24,8 +24,11 @@ public class LoginActivity extends AppCompatActivity implements View.OnClickList
public void onClick(View view) {
if(view.getId() == R.id.rigster){
startActivity(new Intent(this,RigsterActivity.class));
}else{
startActivity(new Intent(this,MineActivity.class));
}else if(view.getId() == R.id.login){
//验证密码功能待补充
Intent intent = new Intent(this,MineActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
}

@ -13,11 +13,15 @@ public class MineActivity extends AppCompatActivity implements View.OnClickListe
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mine);
findViewById(R.id.vote).setOnClickListener(this);
findViewById(R.id.outload).setOnClickListener(this);
}
@Override
public void onClick(View view) {
if(view.getId() == R.id.vote){
startActivity(new Intent(this,IdolTagMainActivity.class));
}
if(view.getId() == R.id.outload){
//待修改,因為這樣數據還在
finish();

@ -100,6 +100,7 @@ public class RigsterActivity extends AppCompatActivity implements View.OnClickLi
//注册验证
public void validateRegister(){
Intent intent = new Intent(RigsterActivity.this,LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
String username = usernameEdit.getText().toString();
String password = passEdit.getText().toString();
String surePassword = surePasswordEdit.getText().toString();

@ -0,0 +1,76 @@
package com.example.myapplication.adapter;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.example.myapplication.bean.Tag;
import com.example.myapplication.R;
import java.util.List;
public class IdolAdapter extends BaseAdapter {
List<Tag> mList;
Context mContext;
public IdolAdapter(List<Tag> mList, Context mContext) {
this.mList = mList;
this.mContext = mContext;
}
@Override
public int getCount() {
return mList !=null ? mList.size() : 0;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHoder holder;
if(view == null){ //如果view = null,说明是第一次加载
holder = new ViewHoder();
//加载布局页面
view = LayoutInflater.from(mContext).inflate(R.layout.item_layout,null);
holder.tvText = view.findViewById(R.id.tv_text);
holder.tvLine = view.findViewById(R.id.tv_line);
holder.Menu = view.findViewById(R.id.menu);
view.setTag(holder);
}else{
holder = (ViewHoder) view.getTag();
}
//从数据集合中获取idol对象判断idol中ischecked属性判断是否被选中
if(mList.get(i).isChecked()){
holder.tvText.setTextColor(Color.BLUE);
holder.tvLine.setVisibility(View.VISIBLE);
holder.Menu.setBackgroundColor(Color.WHITE);
}else{
holder.tvText.setTextColor(Color.BLACK);
holder.tvLine.setVisibility(View.INVISIBLE);
holder.Menu.setBackgroundColor(Color.parseColor("#ebebeb"));
}
String type = mList.get(i).getType(); //取出对象idol里的数据
holder.tvText.setText(type);
return view;
}
//用于放item_layout里的控件
class ViewHoder{
TextView tvText;
TextView tvLine;
LinearLayout Menu;
}
}

@ -0,0 +1,30 @@
package com.example.myapplication.bean;
public class Tag {
//爱豆的种类名称
private String type;
//标记当前的typeitem是否被选中
private boolean isChecked;
public Tag(String type) {
this.type = type;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean checked) {
isChecked = checked;
}
}

@ -0,0 +1,46 @@
package com.example.myapplication.fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.example.myapplication.R;
public class ShowFragment extends Fragment {
TextView tvText;
String type;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
if(bundle != null ){
type = bundle.getString("type");
}
}
public static Fragment getShowFragment(String type){
ShowFragment showFragment = new ShowFragment();
Bundle bundle = new Bundle();
bundle.putString("type",type);
showFragment.setArguments(bundle);
return showFragment;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_show,null);
tvText = view.findViewById(R.id.tv_content);
tvText.setText(type);
return view;
}
}

@ -0,0 +1,22 @@
<?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"
tools:context=".IdolTagMainActivity"
android:orientation="horizontal">
<ListView
android:id="@+id/mListview"
android:layout_weight="1"
android:layout_width="0dp"
android:background="#ebebeb"
android:layout_height="match_parent"/>
<FrameLayout
android:id="@+id/mFrame"
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="match_parent"></FrameLayout>
</LinearLayout>

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="30sp"
android:gravity="center"/>
</LinearLayout>

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/menu"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_line"
android:layout_width="3dp"
android:layout_height="match_parent"
android:visibility="invisible"
android:background="@color/blue"/>
<TextView
android:id="@+id/tv_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"/>
</LinearLayout>
</LinearLayout>

@ -28,7 +28,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="20dp">
<ImageView
android:layout_width="30dp"
android:layout_width="40dp"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:scaleType="centerInside"
@ -50,18 +50,18 @@
android:layout_height="wrap_content"
android:layout_marginTop="5dp">
<ImageView
android:layout_width="30dp"
android:layout_width="40dp"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:scaleType="centerInside"
android:src="@drawable/data"
android:background="@color/white"/>
<TextView
android:id="@+id/data"
android:id="@+id/vote"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical|left"
android:text=" 数据统计"
android:text=" 歌手投票"
android:textSize="40px"
android:background="@color/white"/>
</LinearLayout>
@ -72,7 +72,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="5dp">
<ImageView
android:layout_width="30dp"
android:layout_width="40dp"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:scaleType="centerInside"
@ -95,7 +95,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="5dp">
<ImageView
android:layout_width="30dp"
android:layout_width="40dp"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:scaleType="centerInside"
@ -117,7 +117,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="5dp">
<ImageView
android:layout_width="30dp"
android:layout_width="40dp"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:scaleType="centerInside"
@ -139,7 +139,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="5dp">
<ImageView
android:layout_width="30dp"
android:layout_width="40dp"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:scaleType="centerInside"
@ -160,13 +160,12 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="15dp"
android:layout_marginTop="50dp"
android:layout_gravity="center_horizontal">
<Button
android:id = "@+id/outload"
android:layout_width="250dp"
android:layout_height="50dp"
android:layout_marginTop="20dp"
android:textSize="18sp"
android:textColor="@color/white"
android:background="@drawable/button_1"

@ -8,7 +8,7 @@
<!--APP Login 以及名字-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="140dp"
android:layout_height="160dp"
android:layout_marginTop="100dp"
android:gravity="center_horizontal"
android:orientation="vertical">

@ -7,7 +7,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="140dp"
android:layout_height="160dp"
android:layout_marginTop="100dp"
android:gravity="center_horizontal"
android:orientation="vertical">

@ -12,5 +12,6 @@
<color name ="blue">#F41478db</color>
<color name ="deepGrey">#7c858d</color>
<color name ="lightGrey">#EBEBE9</color>
<color name="grey">#808080</color>
</resources>

@ -1,4 +1,6 @@
<resources>
<string name="app_name"></string>
<string name = "hello">你好,世界! </string>
<string name="hello">你好,世界! </string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
</resources>
Loading…
Cancel
Save