Skip to content

Commit

Permalink
模块和资源整合
Browse files Browse the repository at this point in the history
  • Loading branch information
wosojadfjgo committed Sep 11, 2019
1 parent 94cb1a6 commit 49303b2
Show file tree
Hide file tree
Showing 45 changed files with 671 additions and 414 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class ConfigConstants {
public static final String PATH_PLANET_BALL = "/main/planetBall";
public static final String PATH_HOME_PROVIDER = "/home/main/service";
//user模块路由路径
public static final String PATH_ENCOURAGE = "/user/encourage";
public static final String PATH_KOTLIN = "/user/kotlin";
public static final String PATH_LOGIN = "/user/login";
public static final String PATH_USER = "/user/activity";
Expand All @@ -49,8 +50,6 @@ public class ConfigConstants {
public static final String PATH_GANK = "/module2/gank";
public static final String PATH_LEISURE_READ = "/module2/leisureRead";
public static final String PATH_WELFARE = "/module2/welfare";
public static final String PATH_ABOUT = "/module2/about";
public static final String PATH_ENCOURAGE = "/module2/encourage";
public static final String PATH_TODAY_HISTORY = "/module2/todayHistory";
//科大讯飞Iflytek模块路径
public static final String PATH_VOICE_DICATION_PROVIDER = "/iflytek/service";
Expand Down
29 changes: 29 additions & 0 deletions base/src/main/java/com/heyongrui/base/widget/MarqueeTextView.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.heyongrui.base.widget;

import android.content.Context;
import android.util.AttributeSet;

import androidx.appcompat.widget.AppCompatTextView;

/**
* 自定义跑马灯TextView,不随焦点改变
*/
public class MarqueeTextView extends AppCompatTextView {

public MarqueeTextView(Context context) {
this(context, null);
}

public MarqueeTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public MarqueeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

@Override
public boolean isFocused() {
return true;
}
}
140 changes: 140 additions & 0 deletions base/src/main/res/drawable/bg_circle_shadow.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:right="1dp" android:top="1dp">
<layer-list>
<item>
<shape android:shape="oval">
<solid android:color="#08000000" />
<padding android:bottom="3px" android:left="3px" android:right="3px" android:top="3px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#09000000" />
<padding android:bottom="2px" android:left="2px" android:right="2px" android:top="2px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#10000000" />
<padding android:bottom="2px" android:left="2px" android:right="2px" android:top="2px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#11000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#12000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#13000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#14000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#15000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#16000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
</layer-list>
</item><!-- Blue button pressed -->
<item>
<shape android:shape="oval">
<solid android:color="#90CAF9" />
</shape>
</item>
</layer-list>
</item>
<item android:state_enabled="true">
<layer-list>
<!-- Shadow -->
<item android:right="1dp" android:top="2dp">
<layer-list>
<item>
<shape android:shape="oval">
<solid android:color="#08000000" />
<padding android:bottom="4px" android:left="4px" android:right="4px" android:top="4px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#09000000" />
<padding android:bottom="2px" android:left="2px" android:right="2px" android:top="2px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#10000000" />
<padding android:bottom="2px" android:left="2px" android:right="2px" android:top="2px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#11000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#12000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#13000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#14000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#15000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#16000000" />
<padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" />
</shape>
</item>
</layer-list>
</item>
<!-- Blue button -->
<item>
<shape android:shape="oval">
<padding android:bottom="@dimen/dp_10" android:left="@dimen/dp_10" android:right="@dimen/dp_10" android:top="@dimen/dp_10" />
<solid android:color="@color/colorAccent" />
</shape>
</item>
</layer-list>
</item>
</selector>
155 changes: 143 additions & 12 deletions main/src/main/java/com/heyongrui/main/HomeFragment.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,32 @@
package com.heyongrui.main;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.view.ViewGroup;

import androidx.annotation.DrawableRes;
import androidx.core.content.ContextCompat;

import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.util.ConvertUtils;
import com.heyongrui.base.assist.ConfigConstants;
import com.heyongrui.base.base.BaseFragment;
import com.heyongrui.base.widget.MarqueeTextView;
import com.heyongrui.base.widget.numberruntextview.NumberRunningTextView;
import com.heyongrui.base.widget.planetball.adapter.PlanetAdapter;
import com.heyongrui.base.widget.planetball.view.PlanetBallView;
import com.heyongrui.base.widget.tickerview.TickerUtils;
import com.heyongrui.base.widget.tickerview.TickerView;
import com.heyongrui.main.data.dto.FloatingDto;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class HomeFragment extends BaseFragment implements View.OnClickListener {
Expand All @@ -24,8 +40,8 @@ public class HomeFragment extends BaseFragment implements View.OnClickListener {
public static HomeFragment getInstance() {
HomeFragment fragment = new HomeFragment();
Bundle bundle = new Bundle();
bundle.putInt("tabIconId", R.drawable.icon_mono);
bundle.putInt("tabTitleId", R.string.app_name);
bundle.putInt("tabIconId", R.drawable.ic_tool);
bundle.putInt("tabTitleId", R.string.tool);
fragment.setArguments(bundle);
return fragment;
}
Expand All @@ -38,11 +54,7 @@ protected int getLayoutId() {
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.btn_motion) {
ARouter.getInstance().build(ConfigConstants.PATH_KOTLIN).navigation();
} else if (id == R.id.btn_planet_ball) {
ARouter.getInstance().build(ConfigConstants.PATH_PLANET_BALL).navigation();
} else if (id == R.id.ticker_view) {
if (id == R.id.ticker_view) {
if (tickerCount < 5) {
tickerView.setCharacterLists(TickerUtils.provideNumberList());
tickerView.setText("¥" + new Random().nextInt(500) + "." + new Random().nextInt(100));
Expand All @@ -63,19 +75,138 @@ public void onClick(View v) {

@Override
protected void initView(Bundle savedInstanceState) {
PlanetBallView planetBall = mView.findViewById(R.id.planet_ball);
initPlanetBallView(planetBall, getFloatListData());

tickerView = mView.findViewById(R.id.ticker_view);
numberRunTv = mView.findViewById(R.id.number_run_tv);
Button btnMotion = mView.findViewById(R.id.btn_motion);
Button btnPlanetBall = mView.findViewById(R.id.btn_planet_ball);

addOnClickListeners(this, tickerView, numberRunTv, btnMotion, btnPlanetBall);
addOnClickListeners(this, tickerView, numberRunTv);
}

@Override
protected void initData(Bundle savedInstanceState) {

}

private void initPlanetBallView(PlanetBallView planetBallView, List<FloatingDto> floatingDtoList) {
int dp70 = ConvertUtils.dp2px(70);
planetBallView.setAdapter(new PlanetAdapter() {
@Override
public int getCount() {
if (null == floatingDtoList || floatingDtoList.isEmpty()) {
return 0;
} else {
return floatingDtoList.size();
}
}

@Override
public View getView(Context context, int position, ViewGroup parent) {
String name = "";
int iconRes = R.drawable.ic_launcher;
Object item = getItem(position);
if (null != item && item instanceof FloatingDto) {
name = ((FloatingDto) item).getName();
iconRes = ((FloatingDto) item).getIcon_res();
}
MarqueeTextView marqueeTextView = new MarqueeTextView(context);
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(dp70, dp70);
marqueeTextView.setLayoutParams(layoutParams);
marqueeTextView.setBackgroundResource(R.drawable.bg_circle_shadow);
marqueeTextView.setGravity(Gravity.CENTER);
marqueeTextView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
marqueeTextView.setMarqueeRepeatLimit(-1);
marqueeTextView.setSingleLine(true);
marqueeTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
marqueeTextView.setTextColor(Color.WHITE);
marqueeTextView.setText(TextUtils.isEmpty(name) ? "" : name);
Drawable drawable = ContextCompat.getDrawable(context, iconRes);
drawable.setBounds(0, 0, 80, 80 * drawable.getIntrinsicHeight() / drawable.getIntrinsicWidth());
marqueeTextView.setCompoundDrawables(null, drawable, null, null);
marqueeTextView.setFocusable(true);
marqueeTextView.post(() -> marqueeTextView.onWindowFocusChanged(true));
marqueeTextView.setOnClickListener(view -> {
if (null != item && item instanceof FloatingDto) {
int type = ((FloatingDto) item).getType();
switch (type) {
case 1://分词解析
break;
case 2://航班查询
break;
case 3://身份证查询
break;
case 4://天气预报
break;
case 5://新华字典查询
break;
case 6://成语查询
break;
case 7://动作布局动画
ARouter.getInstance().build(ConfigConstants.PATH_KOTLIN).navigation();
break;
case 8://星球
ARouter.getInstance().build(ConfigConstants.PATH_PLANET_BALL).navigation();
break;
case 9://垃圾分类
ARouter.getInstance().build(ConfigConstants.PATH_GARBAGE_CLASSIFY).navigation();
break;
case 10://智能机器人对话
ARouter.getInstance().build(ConfigConstants.PATH_SMART_ROBOT).navigation();
break;
case 11://音乐搜索
ARouter.getInstance().build(ConfigConstants.PATH_H5).withString("h5Url", "https://ys.juan8014.cn/yin/").navigation();
break;
}
}
});
return marqueeTextView;
}

@Override
public Object getItem(int position) {
if (null == floatingDtoList || floatingDtoList.isEmpty()) {
return null;
} else {
return floatingDtoList.get(position);
}
}

@Override
public int getPopularity(int position) {
return position % 10;
}

@Override
public void onThemeColorChanged(View view, int themeColor) {

}
});
}

private List<FloatingDto> getFloatListData() {
List<FloatingDto> floatingDtoList = new ArrayList<>();
floatingDtoList.add(creatFloatingDto(getString(R.string.participle_parse), R.drawable.ic_participle, 1));
floatingDtoList.add(creatFloatingDto(getString(R.string.flight_query), R.drawable.ic_flight, 2));
floatingDtoList.add(creatFloatingDto(getString(R.string.id_card_query), R.drawable.ic_id_card, 3));
floatingDtoList.add(creatFloatingDto(getString(R.string.weather_forecast), R.drawable.ic_weather, 4));
floatingDtoList.add(creatFloatingDto(getString(R.string.dictionary_query), R.drawable.ic_dictionary, 5));
floatingDtoList.add(creatFloatingDto(getString(R.string.idiom_query), R.drawable.ic_idiom, 6));
floatingDtoList.add(creatFloatingDto(getString(R.string.motion_layout_anim), R.drawable.ic_anim, 7));
floatingDtoList.add(creatFloatingDto(getString(R.string.planet), R.drawable.ic_planet, 8));
floatingDtoList.add(creatFloatingDto(getString(R.string.garbage_classify_query), R.drawable.ic_ashcan, 9));
floatingDtoList.add(creatFloatingDto(getString(R.string.artificial_intelligence), R.drawable.ic_robot, 10));
floatingDtoList.add(creatFloatingDto(getString(R.string.music_search), R.drawable.ic_music_disc, 11));
return floatingDtoList;
}

private FloatingDto creatFloatingDto(String name, @DrawableRes int drawableRes, int type) {
FloatingDto floatingDto = new FloatingDto();
floatingDto.setName(name);
floatingDto.setIcon_res(drawableRes);
floatingDto.setType(type);
return floatingDto;
}

private String generateChars(Random random, String list, int numDigits) {
final char[] result = new char[numDigits];
for (int i = 0; i < numDigits; i++) {
Expand Down
Loading

0 comments on commit 49303b2

Please sign in to comment.