Подобие сбора энергии в АнтФорест
Извлеките необходимые файлы: BallModel и TipsModel сущностные классы из папки module, а также класс EnergyTree компонента, а также требуемые item макеты и ресурсные файлы.
По методу collectAnimator(final View view, boolean isRun)
класса EnergyTree
можно понять, что конечной точкой движения шара является центральная точка этого макета, то есть mHeight / 2
и mWidth / 2 - 60
. Вы можете изменить центральную точку в соответствии со своими требованиями.
Параметры isCollectBall
и isCollectTips
позволяют контролировать возможность перемещения и исчезновения при нажатии на энергию шара или Tips сообщение соответственно.
Максимальное количество энергетических шаров — семь.
Максимальное количество Tips сообщений — четыре.
Строки 107 (ось X) и 108 (ось Y) класса EnergyTree
позволяют регулировать положение осей XY для Tips сообщений.
public class MainActivity extends AppCompatActivity {
private EnergyTree mWaterFlake;
private List<BallModel> mBallList;
private List<TipsModel> mTipsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
``` initData();
mWaterFlake = findViewById(R.id.custom_view);
Button mBtn = findViewById(R.id.btn);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mWaterFlake.setModelList(mBallList, mTipsList);
}
});
mBtn.post(new Runnable() {
@Override
public void run() {
mWaterFlake.setModelList(mBallList, mTipsList);
}
}); mWaterFlake.isCollectTips(false);
mWaterFlake.setOnBallItemListener(new EnergyTree.OnBallItemListener() {
@Override
public void onItemClick(BallModel ballModel) {
Toast.makeText(MainActivity.this, "Собрано " + ballModel.getValue() + " единиц энергии", Toast.LENGTH_SHORT).show();
}
});
mWaterFlake.setOnTipsItemListener(new EnergyTree.OnTipsItemListener() {
@Override
public void onItemClick(TipsModel tipsModel) {
Toast.makeText(MainActivity.this, tipsModel.getContent(), Toast.LENGTH_SHORT).show();
}
});
}
}
``````java
private void initData() {
mBallList = new ArrayList<>();
mBallList.add(new BallModel("энергия", "5 ед."));
mBallList.add(new BallModel("энергия", "7 ед."));
mBallList.add(new BallModel("энергия", "15 ед."));
mBallList.add(new BallModel("энергия", "1 ед."));
mBallList.add(new BallModel("энергия", "2 ед."));
mBallList.add(new BallModel("энергия", "9 ед."));
mBallList.add(new BallModel("энергия", "9 ед."));
mTipsList = new ArrayList<>();
mTipsList.add(new TipsModel("Подсказка: недостаток воды"));
mTipsList.add(new TipsModel("Подсказка: сильный ветер"));
mTipsList.add(new TipsModel("Подсказка: ливень"));
mTipsList.add(new TipsModel("Подсказка: засуха"));
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:orientation="vertical"
android:background="@mipmap/background">
``` <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/tree" />
</LinearLayout>
<com.bryant.EnergyTree
android:id="@+id/custom_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom"
android:padding="10dp">
<Button
android:id="@+id/btn"
android:text="Сбросить"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
</RelativeLayout>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )