java - 如何将我的 Java 项目与已转换为库的另一个 Java 项目链接?
问题描述
我创建了一个 Java Splash Screen 项目,并通过源代码导入了另一个 IntroScreen 项目并将其转换为库。现在我需要按以下顺序将这两个链接在一起:启动画面 --> IntroScreen。
启动画面 Java 代码
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run()
{
Intent intent = new Intent(SplashActivity.this,IntroActivity.class);
startActivity(intent);
finish();
}
},2500);
}
}
来自库的 IntroActivity 代码(来自转换后的库)
private ViewPager screenPager;
IntroViewPagerAdapter introViewPagerAdapter ;
TabLayout tabIndicator;
Button btnNext;
int position = 0 ;
Button btnGetStarted;
Animation btnAnim ;
TextView tvSkip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// make the activity on full screen
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// when this activity is about to be launch we need to check if its openened before or not
if (restorePrefData()) {
Intent mainActivity = new Intent(getApplicationContext(),MainActivity.class );
startActivity(mainActivity);
finish();
}
setContentView(R.layout.activity_intro);
// hide the action bar
getSupportActionBar().hide();
// ini views
btnNext = findViewById(R.id.btn_next);
btnGetStarted = findViewById(R.id.btn_get_started);
tabIndicator = findViewById(R.id.tab_indicator);
btnAnim = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.button_animation);
tvSkip = findViewById(R.id.tv_skip);
// fill list screen
final List<ScreenItem> mList = new ArrayList<>();
mList.add(new ScreenItem("Fresh Food","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua, consectetur consectetur adipiscing elit",R.drawable.img1));
mList.add(new ScreenItem("Fast Delivery","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua, consectetur consectetur adipiscing elit",R.drawable.img2));
mList.add(new ScreenItem("Easy Payment","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua, consectetur consectetur adipiscing elit",R.drawable.img3));
// setup viewpager
screenPager =findViewById(R.id.screen_viewpager);
introViewPagerAdapter = new IntroViewPagerAdapter(this,mList);
screenPager.setAdapter(introViewPagerAdapter);
// setup tablayout with viewpager
tabIndicator.setupWithViewPager(screenPager);
// next button click Listner
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
position = screenPager.getCurrentItem();
if (position < mList.size()) {
position++;
screenPager.setCurrentItem(position);
}
if (position == mList.size()-1) { // when we rech to the last screen
// TODO : show the GETSTARTED Button and hide the indicator and the next button
loaddLastScreen();
}
}
});
// tablayout add change listener
tabIndicator.addOnTabSelectedListener(new TabLayout.BaseOnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (tab.getPosition() == mList.size()-1) {
loaddLastScreen();
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
// Get Started button click listener
btnGetStarted.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//open main activity
Intent mainActivity = new Intent(getApplicationContext(),MainActivity.class);
startActivity(mainActivity);
// also we need to save a boolean value to storage so next time when the user run the app
// we could know that he is already checked the intro screen activity
// i'm going to use shared preferences to that process
savePrefsData();
finish();
}
});
// skip button click listener
tvSkip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
screenPager.setCurrentItem(mList.size());
}
});
}
private boolean restorePrefData() {
SharedPreferences pref = getApplicationContext().getSharedPreferences("myPrefs",MODE_PRIVATE);
Boolean isIntroActivityOpnendBefore = pref.getBoolean("isIntroOpnend",false);
return isIntroActivityOpnendBefore;
}
private void savePrefsData() {
SharedPreferences pref = getApplicationContext().getSharedPreferences("myPrefs",MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("isIntroOpnend",true);
editor.commit();
}
// show the GETSTARTED Button and hide the indicator and the next button
private void loaddLastScreen() {
btnNext.setVisibility(View.INVISIBLE);
btnGetStarted.setVisibility(View.VISIBLE);
tvSkip.setVisibility(View.INVISIBLE);
tabIndicator.setVisibility(View.INVISIBLE);
// TODO : ADD an animation the getstarted button
// setup animation
btnGetStarted.setAnimation(btnAnim);
}
}
IntroViewPagerAdapter 代码(来自转换后的库)
public class IntroViewPagerAdapter extends PagerAdapter {
Context mContext ;
List<ScreenItem> mListScreen;
public IntroViewPagerAdapter(Context mContext, List<ScreenItem> mListScreen) {
this.mContext = mContext;
this.mListScreen = mListScreen;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layoutScreen = inflater.inflate(R.layout.layout_screen,null);
ImageView imgSlide = layoutScreen.findViewById(R.id.intro_img);
TextView title = layoutScreen.findViewById(R.id.intro_title);
TextView description = layoutScreen.findViewById(R.id.intro_description);
title.setText(mListScreen.get(position).getTitle());
description.setText(mListScreen.get(position).getDescription());
imgSlide.setImageResource(mListScreen.get(position).getScreenImg());
container.addView(layoutScreen);
return layoutScreen;
}
@Override
public int getCount() {
return mListScreen.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view == o;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View)object);
}
}
ScreenItem 代码(来自转换后的库)
public class ScreenItem {
String Title,Description;
int ScreenImg;
public ScreenItem(String title, String description, int screenImg) {
Title = title;
Description = description;
ScreenImg = screenImg;
}
public void setTitle(String title) {
Title = title;
}
public void setDescription(String description) {
Description = description;
}
public void setScreenImg(int screenImg) {
ScreenImg = screenImg;
}
public String getTitle() {
return Title;
}
public String getDescription() {
return Description;
}
public int getScreenImg() {
return ScreenImg;
}
}
解决方案
推荐阅读
- javascript - API 在未发送 /api/users/create 响应的情况下解析,这可能会导致请求停止。下一个
- python-3.x - 如何在具有多个参数的熊猫数据帧上调用函数
- flutter - 小部件是在应该使用之前创建的 => 导致错误
- mysql - 使用光标按几何距离分页
- c# - 获得无效的差异:类型参数必须是通用接口的不变有效错误
- javascript - JavaScript 中的任一类型实现
- python - 如何为 lineEdit 更改 QValidator 的行为:
- python-3.x - Selenium:单击下拉菜单中的菜单不起作用
- swift - 如何裁剪由 AVCaptureMovieFileOutput 录制的视频?
- google-analytics - 谷歌分析:创建一个排除访问特定 URL 的所有用户的视图?