Skip to content
This repository was archived by the owner on Sep 3, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
82c4dc8
Update README.md
Yanndroid Jan 13, 2022
c39c3fc
app/ToolbarLayout: fix selectMode subtitle visiblity in landscape (#74)
salvogiangri Jan 14, 2022
80841b4
app/ToolbarLayout: minor fixes (#75)
salvogiangri Jan 15, 2022
b12434b
app: OneUI 4 Dialogs (#76)
salvogiangri Jan 16, 2022
70ad06f
app/oneuiexample: custom dialog button color/progressbar (#77)
salvogiangri Jan 16, 2022
b81110d
app/Dialogs: replace SpenColorPicker with androidx.picker3.SeslColorP…
salvogiangri Jan 19, 2022
5ecc033
dialogbutton color & progressbar
Yanndroid Jan 20, 2022
bcc25a7
app: update RecyclerView, ViewPager, NestedScrollView; fix OUI4 Progr…
salvogiangri Jan 21, 2022
0779fc5
app: update AppBarLayout, rework folder hierarchy (#80)
salvogiangri Jan 22, 2022
e46f328
app/SamsungAppBarLayout: Immersive scroll for pre-api30 (#81)
salvogiangri Jan 22, 2022
e45253f
- IndexScrollView
Yanndroid Jan 23, 2022
d2e852a
- minor changes
Yanndroid Jan 23, 2022
c970375
- toolbarlayout improvments
Yanndroid Jan 23, 2022
1b3da26
app/ToolbarLayout: rework (#83)
salvogiangri Jan 24, 2022
3a0feca
- fixes, cleanup, toolbar improvments
Yanndroid Jan 24, 2022
1f5086b
- app:layout_location="root" params fix
Yanndroid Jan 24, 2022
9275bfd
- app:layout_location="root" params fix
Yanndroid Jan 24, 2022
7e05b54
app: SamsungCollapsingToolbarLayout update (#84)
salvogiangri Jan 24, 2022
f63586d
app/DetailedColorPicker: fix bugs, refine ui (#85)
salvogiangri Jan 24, 2022
1a6992f
- minor changes
Yanndroid Jan 24, 2022
08118a0
Revert "app/SamsungCollapsingToolbarLayout: burp" (#86)
salvogiangri Jan 24, 2022
29143e0
app: SamsungCoordinatingLayout update (#88)
salvogiangri Jan 25, 2022
e5556f9
app/DetailedColorPicker: fix crashes (#89)
salvogiangri Jan 25, 2022
79ff1d2
app: SamsungTabLayout update (#90)
salvogiangri Jan 26, 2022
ba8814d
- sample app rtl fixes
Yanndroid Jan 26, 2022
d8d3122
app: add ViewPager2, TabLayoutMediator, TipPopup (#91)
salvogiangri Jan 27, 2022
ab13937
- minor improvements
Yanndroid Jan 27, 2022
387a1bd
- readme update
Yanndroid Jan 27, 2022
0fc1111
app: minor fixes (#92)
salvogiangri Jan 28, 2022
6abe84f
- readme update
Yanndroid Jan 28, 2022
7d90a8a
app/ViewPager2: add seslGetListView (#93)
salvogiangri Jan 29, 2022
e8b9389
app: update Preferences (#94)
salvogiangri Jan 29, 2022
2d62875
- preference fixes
Yanndroid Jan 29, 2022
7682a5f
- minor changes
Yanndroid Jan 30, 2022
4316db1
app/oneuiexample: OUI4 themed app icon (#95)
salvogiangri Jan 31, 2022
ceb394d
app/PopupMenu: add blur effect support for OUI 4 devices (#96)
salvogiangri Jan 31, 2022
65f2fa8
app: OUI4 SeekBar, EditText (#97)
salvogiangri Feb 1, 2022
8289bea
app: ProgressBar & SeekBar rework (#98)
salvogiangri Feb 2, 2022
68376b1
seekbar fix:
Yanndroid Feb 2, 2022
e1d3d94
- v2.3.0
Yanndroid Feb 2, 2022
c82a34c
- removed sesl4_seekbar_overlap_color_default
Yanndroid Feb 2, 2022
ffa0b27
- apk
Yanndroid Feb 4, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1,402 changes: 17 additions & 1,385 deletions README.md

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,12 @@ android {

dependencies {

implementation 'androidx.appcompat:appcompat:1.4.0'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation project(path: ':yanndroid:oneui')
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.+'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
Binary file modified app/release/app-release.apk
Binary file not shown.
4 changes: 2 additions & 2 deletions app/release/output-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 56,
"versionName": "2.2.1",
"versionCode": 57,
"versionName": "2.3.0",
"outputFile": "app-release.apk"
}
],
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@
<meta-data
android:name="com.samsung.android.icon_container.has_icon_container"
android:value="true" />
<meta-data
android:name="com.samsung.android.icon_container.feature_appicon"
android:value="ADAPTIVEICON_SHADOW" />

<activity android:name=".SwitchBarActivity" />
<activity
Expand All @@ -30,6 +27,9 @@
android:name=".SplashActivity"
android:theme="@style/OneUISplashTheme"
android:exported="true">
<meta-data
android:name="com.sec.android.app.launcher.icon_theme" android:value="themeColor"/>

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

Expand Down
203 changes: 107 additions & 96 deletions app/src/main/java/de/dlyt/yanndroid/oneuiexample/MainActivity.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import de.dlyt.yanndroid.oneui.layout.SwitchBarLayout;
import de.dlyt.yanndroid.oneui.layout.ToolbarLayout;
import de.dlyt.yanndroid.oneui.view.Switch;
import de.dlyt.yanndroid.oneui.view.SwitchBar;
import de.dlyt.yanndroid.oneui.widget.Switch;
import de.dlyt.yanndroid.oneui.widget.SwitchBar;
import de.dlyt.yanndroid.oneuiexample.base.BaseThemeActivity;

public class SwitchBarActivity extends BaseThemeActivity implements SwitchBar.OnSwitchChangeListener {
Expand All @@ -20,16 +21,16 @@ protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_switchbar);

SwitchBarLayout switchBarLayout = findViewById(R.id.switchbarlayout_switchbaractivity);
ToolbarLayout toolbarLayout = switchBarLayout.getToolbarLayout();

toolbarLayout.inflateToolbarMenu(R.menu.switchpreferencescreen_menu);
toolbarLayout.setOnToolbarMenuItemClickListener(item -> {
switchBarLayout.setNavigationButtonTooltip(getString(R.string.sesl_navigate_up));
switchBarLayout.setNavigationButtonOnClickListener(view -> onBackPressed());
switchBarLayout.inflateToolbarMenu(R.menu.switchpreferencescreen_menu);
switchBarLayout.setOnToolbarMenuItemClickListener(item -> {
Toast.makeText(this, "Item clicked", Toast.LENGTH_SHORT).show();
return true;
});

switchBarLayout.getSwitchBar().setChecked(getSwitchBarDefaultStatus());
switchBarLayout.getSwitchBar().addOnSwitchChangeListener(this);
switchBarLayout.setChecked(getSwitchBarDefaultStatus());
switchBarLayout.addOnSwitchChangeListener(this);
}

private boolean getSwitchBarDefaultStatus() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,14 @@ protected void onCreate(Bundle savedInstanceState) {

int normalTheme = mUseOUI4Theme ? R.style.OneUI4Theme : R.style.OneUI3Theme;
int altTheme = mUseOUI4Theme ? R.style.OneUI4AboutTheme : R.style.OneUI3AboutTheme;

setTheme(mUseAltTheme ? altTheme : normalTheme);
new ThemeUtil(this);

super.onCreate(savedInstanceState);

int normalThemeNavBar = mUseOUI4Theme ? R.color.sesl4_round_and_bgcolor : R.color.sesl_round_and_bgcolor;
int altThemeNavBar = R.color.splash_background;
getWindow().setNavigationBarColor(getResources().getColor(mUseAltTheme ? altThemeNavBar : normalThemeNavBar));
}

protected void switchOUITheme() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,21 @@
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;

import de.dlyt.yanndroid.oneui.view.TabLayout;
import de.dlyt.yanndroid.oneui.view.ViewPager;
import com.google.android.material.floatingactionbutton.FloatingActionButton;

import de.dlyt.yanndroid.oneui.sesl.tabs.SamsungTabLayout;
import de.dlyt.yanndroid.oneui.sesl.tabs.TabLayoutMediator;
import de.dlyt.yanndroid.oneui.sesl.viewpager2.widget.SeslViewPager2;
import de.dlyt.yanndroid.oneui.view.ViewPager2;
import de.dlyt.yanndroid.oneui.widget.TabLayout;
import de.dlyt.yanndroid.oneuiexample.R;
import de.dlyt.yanndroid.oneuiexample.base.BaseThemeActivity;
import de.dlyt.yanndroid.oneuiexample.tabs.ViewPagerAdapter;
import de.dlyt.yanndroid.oneuiexample.tabs.ViewPager2Adapter;

public class MainActivityFirstFragment extends Fragment {

private BaseThemeActivity mActivity;
private Context mContext;
private View mRootView;
Expand All @@ -40,11 +45,48 @@ public void onViewCreated(View view, Bundle savedInstanceState) {
getView().setBackgroundColor(getResources().getColor(mActivity.mUseOUI4Theme ? R.color.sesl4_round_and_bgcolor : R.color.sesl_round_and_bgcolor));

// TabLayout and ViewPager
TabLayout tabLayout = mRootView.findViewById(R.id.tabLayout);
ViewPager viewPager = mRootView.findViewById(R.id.viewPager);
viewPager.setAdapter(new ViewPagerAdapter(getChildFragmentManager()));
tabLayout.setupWithViewPager(viewPager);
tabLayout.updateWidget();
FloatingActionButton fab = mActivity.findViewById(R.id.sesl_fab);
TabLayout subTabs = mRootView.findViewById(R.id.sub_tabs);
subTabs.seslSetSubTabStyle();
ViewPager2 viewPager2 = mRootView.findViewById(R.id.viewPager2);
viewPager2.setAdapter(new ViewPager2Adapter(this));
viewPager2.registerOnPageChangeCallback(new SeslViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (position == 0) {
fab.show();
} else {
fab.hide();
}
}

@Override
public void onPageSelected(int position) {
if (position == 0) {
fab.show();
} else {
fab.hide();
}
}

@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager2.SCROLL_STATE_IDLE && viewPager2.getCurrentItem() == 0) {
fab.show();
} else {
fab.hide();
}
}
});

TabLayoutMediator tlm = new TabLayoutMediator(subTabs, viewPager2, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull SamsungTabLayout.Tab tab, int position) {
String[] tabTitle = {"Views", "Icons", "Nothing"};
tab.setText(tabTitle[position]);
}
});
tlm.attach();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.util.SeslMisc;

Expand Down Expand Up @@ -56,6 +57,11 @@ public void onCancelClicked(View view) {
parent.removePreference(findPreference("spacing"));
}
}

@Override
public void onViewClicked(View view) {
Toast.makeText(mContext, "TipsCardView clicked", Toast.LENGTH_SHORT).show();
}
});

HorizontalRadioPreference darkModePref = (HorizontalRadioPreference) findPreference("dark_mode");
Expand Down
89 changes: 39 additions & 50 deletions app/src/main/java/de/dlyt/yanndroid/oneuiexample/tabs/IconsTab.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,22 @@
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.util.SeslRoundedCorner;
import de.dlyt.yanndroid.oneui.sesl.utils.SeslRoundedCorner;
import androidx.fragment.app.Fragment;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import de.dlyt.yanndroid.oneui.layout.DrawerLayout;
import de.dlyt.yanndroid.oneui.layout.ToolbarLayout;
import de.dlyt.yanndroid.oneui.sesl.recyclerview.SeslLinearLayoutManager;
import de.dlyt.yanndroid.oneui.view.BottomNavigationView;
import de.dlyt.yanndroid.oneui.sesl.recyclerview.LinearLayoutManager;
import de.dlyt.yanndroid.oneui.view.IndexScrollView;
import de.dlyt.yanndroid.oneui.view.RecyclerView;
import de.dlyt.yanndroid.oneui.view.TabLayout;
import de.dlyt.yanndroid.oneui.view.ViewPager;
import de.dlyt.yanndroid.oneui.view.ViewPager2;
import de.dlyt.yanndroid.oneui.widget.TabLayout;
import de.dlyt.yanndroid.oneuiexample.R;

public class IconsTab extends Fragment {
//229
Integer[] imageIDs = {R.drawable.ic_samsung_accessibility,
R.drawable.ic_samsung_account,
R.drawable.ic_samsung_advanced_feature,
Expand All @@ -49,7 +49,6 @@ public class IconsTab extends Fragment {
R.drawable.ic_samsung_audio,
R.drawable.ic_samsung_audio_2,
R.drawable.ic_samsung_back,
R.drawable.ic_samsung_bag,
R.drawable.ic_samsung_biometric_face,
R.drawable.ic_samsung_biometric_fingerprint,
R.drawable.ic_samsung_biometric_fingerprint_2,
Expand Down Expand Up @@ -300,7 +299,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
for (int i = 0; i < imageIDs.length; i++) selected.put(i, false);

listView = mRootView.findViewById(R.id.images);
listView.setLayoutManager(new SeslLinearLayoutManager(mContext));
listView.setLayoutManager(new LinearLayoutManager(mContext));
imageAdapter = new ImageAdapter();
listView.setAdapter(imageAdapter);

Expand All @@ -309,11 +308,17 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
decoration.setDivider(mContext.getDrawable(divider.resourceId));

listView.setItemAnimator(null);
listView.seslSetFastScrollerEnabled(true);
listView.seslSetFillBottomEnabled(true);
listView.seslSetGoToTopEnabled(true);
listView.seslSetLastRoundedCorner(false);

IndexScrollView indexScrollView = mRootView.findViewById(R.id.indexScrollView);
List<String> list = new ArrayList<>();
for (int i = 0; i < imageIDs.length - 1; i++)
list.add(getResources().getResourceEntryName(imageIDs[i]).substring(11));
indexScrollView.syncWithRecyclerView(listView, list, true);
indexScrollView.setIndexBarGravity(isRTL() ? 0 : 1);

onBackPressedCallback = new OnBackPressedCallback(false) {
@Override
public void handleOnBackPressed() {
Expand All @@ -323,23 +328,26 @@ public void handleOnBackPressed() {
requireActivity().getOnBackPressedDispatcher().addCallback(onBackPressedCallback);
}

private boolean isRTL() {
return getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
}

public void setSelecting(boolean enabled) {
ToolbarLayout toolbarLayout = ((DrawerLayout) getActivity().findViewById(R.id.drawer_view)).getToolbarLayout();
TabLayout tabLayout = getActivity().findViewById(R.id.tabLayout);
BottomNavigationView bnv = getActivity().findViewById(R.id.main_samsung_tabs);
ViewPager viewPager = getActivity().findViewById(R.id.viewPager);
DrawerLayout drawerLayout = ((DrawerLayout) getActivity().findViewById(R.id.drawer_view));
TabLayout subTabs = getActivity().findViewById(R.id.sub_tabs);
TabLayout mainTabs = getActivity().findViewById(R.id.main_samsung_tabs);
ViewPager2 viewPager2 = getActivity().findViewById(R.id.viewPager2);

if (enabled) {
mSelecting = true;
imageAdapter.notifyItemRangeChanged(0, imageAdapter.getItemCount() - 1);
toolbarLayout.setSelectModeBottomMenu(R.menu.select_mode_menu, item -> {
drawerLayout.setSelectModeBottomMenu(R.menu.select_mode_menu, item -> {
item.setBadge(item.getBadge() + 1);
Toast.makeText(mContext, item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
});
toolbarLayout.showSelectMode();
toolbarLayout.setSelectModeAllCheckedChangeListener((buttonView, isChecked) -> {
drawerLayout.showSelectMode();
drawerLayout.setSelectModeAllCheckedChangeListener((buttonView, isChecked) -> {
if (checkAllListening) {
for (int i = 0; i < imageAdapter.getItemCount() - 1; i++) {
selected.put(i, isChecked);
Expand All @@ -348,22 +356,22 @@ public void setSelecting(boolean enabled) {
}
int count = 0;
for (Boolean b : selected.values()) if (b) count++;
toolbarLayout.setSelectModeCount(count);
drawerLayout.setSelectModeCount(count);
});
tabLayout.setEnabled(false);
bnv.setEnabled(false);
viewPager.setPagingEnabled(false);
subTabs.setEnabled(false);
mainTabs.setEnabled(false);
viewPager2.setUserInputEnabled(false);
onBackPressedCallback.setEnabled(true);
} else {
mSelecting = false;
for (int i = 0; i < imageAdapter.getItemCount() - 1; i++) selected.put(i, false);
imageAdapter.notifyItemRangeChanged(0, imageAdapter.getItemCount() - 1);

toolbarLayout.setSelectModeCount(0);
toolbarLayout.dismissSelectMode();
tabLayout.setEnabled(true);
bnv.setEnabled(true);
viewPager.setPagingEnabled(true);
drawerLayout.setSelectModeCount(0);
drawerLayout.dismissSelectMode();
subTabs.setEnabled(true);
mainTabs.setEnabled(true);
viewPager2.setUserInputEnabled(true);
onBackPressedCallback.setEnabled(false);
}
}
Expand All @@ -375,9 +383,9 @@ public void toggleItemSelected(int position) {
checkAllListening = false;
int count = 0;
for (Boolean b : selected.values()) if (b) count++;
ToolbarLayout toolbarLayout = ((DrawerLayout) getActivity().findViewById(R.id.drawer_view)).getToolbarLayout();
toolbarLayout.setSelectModeAllChecked(count == imageAdapter.getItemCount() - 1);
toolbarLayout.setSelectModeCount(count);
DrawerLayout drawerLayout = ((DrawerLayout) getActivity().findViewById(R.id.drawer_view));
drawerLayout.setSelectModeAllChecked(count == imageAdapter.getItemCount() - 1);
drawerLayout.setSelectModeCount(count);
checkAllListening = true;
}

Expand Down Expand Up @@ -513,7 +521,8 @@ public void seslOnDispatchDraw(Canvas canvas, RecyclerView recyclerView, Recycle
shallDrawDivider = false;

if (mDivider != null && viewHolder.isItem && shallDrawDivider) {
mDivider.setBounds(130, y, width, mDividerHeight + y);
int moveRTL = isRTL() ? 130 : 0;
mDivider.setBounds(130 - moveRTL, y, width - moveRTL, mDividerHeight + y);
mDivider.draw(canvas);
}

Expand All @@ -528,30 +537,10 @@ public void seslOnDispatchDraw(Canvas canvas, RecyclerView recyclerView, Recycle
mSeslRoundedCornerTop.drawRoundedCorner(canvas);
}

private boolean canScrollUp(RecyclerView recyclerView) {
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
if (!(layoutManager instanceof SeslLinearLayoutManager)) {
return false;
}

boolean isntFirstItem = ((SeslLinearLayoutManager) layoutManager).findFirstVisibleItemPosition() > 0;
View childAt = recyclerView.getChildAt(0);

if (isntFirstItem || childAt == null) {
return isntFirstItem;
}
if (childAt.getTop() < recyclerView.getPaddingTop()) {
return true;
} else {
return false;
}
}

public void setDivider(Drawable d) {
mDivider = d;
mDividerHeight = d.getIntrinsicHeight();
listView.invalidateItemDecorations();
}

}
}
Loading