Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 7 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 35 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}

android {
Expand All @@ -14,6 +15,9 @@ android {
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
}

buildTypes {
Expand All @@ -26,13 +30,43 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion '1.4.3'
}
packaging {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
}

dependencies {

implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.recyclerview:recyclerview:1.3.0'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1'
implementation 'androidx.activity:activity-compose:1.7.0'
implementation platform('androidx.compose:compose-bom:2023.03.00')
implementation 'androidx.compose.ui:ui'
implementation 'androidx.compose.ui:ui-graphics'
implementation 'androidx.compose.ui:ui-tooling-preview'
implementation 'androidx.compose.material3:material3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation platform('androidx.compose:compose-bom:2023.03.00')
androidTestImplementation 'androidx.compose.ui:ui-test-junit4'
debugImplementation 'androidx.compose.ui:ui-tooling'
debugImplementation 'androidx.compose.ui:ui-test-manifest'
// RecyclerView


}
62 changes: 61 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,66 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.UniGather"
tools:targetApi="31" />
tools:targetApi="31">
<activity
android:name=".ListActivity"
android:exported="true">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->

<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
</activity>
<activity
android:name=".DetailActivity"
android:exported="true">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->

<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
</activity>
<activity
android:name=".ReleaseActivity"
android:exported="true"
android:windowSoftInputMode="adjustNothing">

<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->


<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
</activity>
<activity
android:name=".UserActivity"
android:exported="true" />
<activity
android:name=".RegisterActivity"
android:exported="false" />
<activity
android:name=".LoginActivity"
android:exported="true">

<!-- <intent-filter> -->
<!-- <action android:name="android.intent.action.MAIN" /> -->


<!-- <category android:name="android.intent.category.LAUNCHER" /> -->
<!-- </intent-filter> -->
</activity>
<activity
android:name=".MainActivity"
android:exported="true">

<intent-filter>
<action android:name="android.intent.action.MAIN" />


<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

</manifest>
53 changes: 53 additions & 0 deletions app/src/main/java/com/example/unigather/DetailActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.example.unigather;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;

public class DetailActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);

// 从Intent获取数据
int imageId = getIntent().getIntExtra("image_id", -1); // '-1' 是默认值

// 使用数据(例如,设置ImageView的图片)
// ImageView imageView = findViewById(R.id.yourImageView);
// if (imageId != -1) {
// imageView.setImageResource(imageId);
// }

//标题栏
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

ImageView btnFavorite = findViewById(R.id.btn_favorite);
btnFavorite.setOnClickListener(new View.OnClickListener() {
private boolean isFavorite = false; // 初始状态
@Override
public void onClick(View v) {
// 改变图标状态
isFavorite = !isFavorite;
btnFavorite.setImageResource(isFavorite ? R.drawable.ic_favorite_filled : R.drawable.ic_favorite_border);
}
});

}

public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish(); // 关闭当前活动,返回到MainActivity
return true;
}
// 其他菜单项...
return super.onOptionsItemSelected(item);
}
}
46 changes: 46 additions & 0 deletions app/src/main/java/com/example/unigather/ListActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.example.unigather;

import com.example.unigather.adapters.*;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;

import androidx.recyclerview.widget.LinearLayoutManager;

import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;

public class ListActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ActivityAdapter activityAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);

recyclerView = findViewById(R.id.rv_list);
recyclerView.setLayoutManager(new LinearLayoutManager(this));

// 设置适配器
List<ActivityItem> activityList = generateSampleData();
activityAdapter = new ActivityAdapter(activityList);
recyclerView.setAdapter(activityAdapter);
}

private List<ActivityItem> generateSampleData() {
List<ActivityItem> activityList = new ArrayList<>();
activityList.add(new ActivityItem("活动标题活动标题活动标题活动标题",R.drawable.image1,111));
activityList.add(new ActivityItem("活动标题2", R.drawable.image1,222));
activityList.add(new ActivityItem("活动标题3", R.drawable.image1,2222));
activityList.add(new ActivityItem("活动标题1",R.drawable.image1,111));
activityList.add(new ActivityItem("活动标题2", R.drawable.image1,222));
activityList.add(new ActivityItem("活动标题3", R.drawable.image1,2222));
activityList.add(new ActivityItem("活动标题1",R.drawable.image1,111));
activityList.add(new ActivityItem("活动标题2", R.drawable.image1,222));
activityList.add(new ActivityItem("活动标题3", R.drawable.image1,2222));
// 添加更多活动...

return activityList;
}
}
35 changes: 35 additions & 0 deletions app/src/main/java/com/example/unigather/LoginActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.example.unigather;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;

public class LoginActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

EditText editTextUsername = findViewById(R.id.editTextUsername);
EditText editTextPassword = findViewById(R.id.editTextPassword);
Button buttonLogin = findViewById(R.id.buttonLogin);
Button buttonRegister = findViewById(R.id.buttonRegister);

buttonLogin.setOnClickListener(v -> {
// 登录逻辑
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish(); // 关闭登录页面
});

buttonRegister.setOnClickListener(v -> {
// 跳转到注册界面
Intent intent = new Intent(this, RegisterActivity.class);
startActivity(intent);
});
}
}
72 changes: 72 additions & 0 deletions app/src/main/java/com/example/unigather/MainActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package com.example.unigather;

import com.example.unigather.adapters.ActivityAdapter;
import com.example.unigather.adapters.ActivityItem;
import com.example.unigather.fragments.*;
import com.google.android.material.bottomnavigation.BottomNavigationView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Intent;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
private EventsViewGroup eventsViewGroup;
private int[] images = {R.drawable.image1, R.drawable.image2, R.drawable.image3};
private RecyclerView rvActivities;
private ActivityAdapter activitiesAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);
bottomNavigationView.setOnItemSelectedListener(item -> {
if (item.getItemId() == R.id.navigation_home) {
//刷新?
return true;
} else if (item.getItemId() == R.id.navigation_publish) {
// 跳转到 ReleaseActivity
Intent publishIntent = new Intent(this, ReleaseActivity.class);
startActivity(publishIntent);
return true;
} else if (item.getItemId() == R.id.navigation_profile) {
//没登录跳转登录页面,已登录跳转个人页面
return true;
}
return false;
});




//热门活动部分
eventsViewGroup = findViewById(R.id.eventsViewGroup);
eventsViewGroup.setImages(images);


TagDropdownView tagDropdownView = findViewById(R.id.tag_dropdown_view);


//活动列表部分
rvActivities = findViewById(R.id.rv_activities);
rvActivities.setLayoutManager(new LinearLayoutManager(this));

List<ActivityItem> activityItems = new ArrayList<>();
// 添加一些模拟数据
activityItems.add(new ActivityItem("活动标题1", R.drawable.image1, 123));
activityItems.add(new ActivityItem("活动标题2", R.drawable.image2, 456));
activityItems.add(new ActivityItem("活动标题3", R.drawable.image2, 456));
activityItems.add(new ActivityItem("活动标题4", R.drawable.image2, 456));
// ...更多数据...

activitiesAdapter = new ActivityAdapter(activityItems);
rvActivities.setAdapter(activitiesAdapter);
}
}
Loading