Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
B
Browser White
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Browser White
Commits
dec8aa00
Commit
dec8aa00
authored
Aug 31, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
525681ed
dcaa5966
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
320 additions
and
35 deletions
+320
-35
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+6
-0
MainActivity.kt
...in/java/com/base/browserwhite/ui/activity/MainActivity.kt
+7
-0
SearchActivity.java
...ava/com/base/browserwhite/ui/activity/SearchActivity.java
+84
-0
SearchResultsFragment.java
.../base/browserwhite/ui/activity/SearchResultsFragment.java
+8
-0
HomeFragment.kt
...in/java/com/base/browserwhite/ui/fragment/HomeFragment.kt
+86
-30
button_move_to_top_animation.xml
app/src/main/res/anim/button_move_to_top_animation.xml
+9
-0
fade_in.xml
app/src/main/res/anim/fade_in.xml
+5
-0
fade_out.xml
app/src/main/res/anim/fade_out.xml
+5
-0
bg_stroke_070709.xml
app/src/main/res/drawable/bg_stroke_070709.xml
+1
-0
activity_search.xml
app/src/main/res/layout/activity_search.xml
+93
-0
fragment_home.xml
app/src/main/res/layout/fragment_home.xml
+6
-4
dimens.xml
app/src/main/res/values/dimens.xml
+7
-0
themes.xml
app/src/main/res/values/themes.xml
+3
-1
No files found.
app/src/main/AndroidManifest.xml
View file @
dec8aa00
...
...
@@ -205,6 +205,12 @@
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".ui.activity.SearchActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<provider
android:name=
"androidx.core.content.FileProvider"
...
...
app/src/main/java/com/base/browserwhite/ui/activity/MainActivity.kt
View file @
dec8aa00
...
...
@@ -94,6 +94,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
}
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
data
:
Intent
?)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
)
homeFragment
?.
onActivityResult
(
resultCode
,
resultCode
,
data
)
}
override
fun
initListener
()
{
super
.
initListener
()
binding
.
llHome
.
setOnClickListener
{
...
...
app/src/main/java/com/base/browserwhite/ui/activity/SearchActivity.java
0 → 100644
View file @
dec8aa00
package
com
.
base
.
browserwhite
.
ui
.
activity
;
import
android.animation.Animator
;
import
android.animation.AnimatorListenerAdapter
;
import
android.animation.ObjectAnimator
;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.content.res.Resources
;
import
android.graphics.Color
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.util.DisplayMetrics
;
import
android.util.Log
;
import
android.util.TypedValue
;
import
android.view.View
;
import
android.view.animation.Animation
;
import
android.view.animation.AnimationUtils
;
import
androidx.annotation.Nullable
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.appcompat.widget.SearchView
;
import
androidx.appcompat.widget.Toolbar
;
import
androidx.constraintlayout.widget.ConstraintLayout
;
import
androidx.coordinatorlayout.widget.CoordinatorLayout
;
import
androidx.fragment.app.FragmentManager
;
import
com.base.browserwhite.MyApplication
;
import
com.base.browserwhite.R
;
import
com.base.browserwhite.utils.BarUtils
;
import
com.google.android.material.appbar.AppBarLayout
;
public
class
SearchActivity
extends
AppCompatActivity
{
@Override
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
BarUtils
.
INSTANCE
.
setStatusBarLightMode
(
this
,
true
);
BarUtils
.
INSTANCE
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
);
setContentView
(
R
.
layout
.
activity_search
);
}
@SuppressLint
(
"MissingSuperCall"
)
@Override
public
void
onBackPressed
()
{
finish
();
setResult
(
10086
);
overridePendingTransition
(
0
,
0
);
}
public
static
void
startActivityWithButtonAnimation
(
Activity
currentActivity
,
View
button
)
{
Log
.
d
(
"glc"
,
"getHeight:"
+-
button
.
getHeight
());
Log
.
d
(
"glc"
,
"getHeight:"
+(-
button
.
getHeight
()-
32
f
));
int
finalPosition
=
(
int
)
TypedValue
.
applyDimension
(
TypedValue
.
COMPLEX_UNIT_DIP
,
48
,
currentActivity
.
getResources
().
getDisplayMetrics
());
ObjectAnimator
animator
=
ObjectAnimator
.
ofFloat
(
button
,
"translationY"
,
button
.
getTranslationY
(),
-
finalPosition
);
animator
.
setDuration
(
500
);
animator
.
addListener
(
new
Animator
.
AnimatorListener
()
{
@Override
public
void
onAnimationStart
(
Animator
animation
)
{
}
@Override
public
void
onAnimationEnd
(
Animator
animation
)
{
button
.
setVisibility
(
View
.
VISIBLE
);
Intent
intent
=
new
Intent
(
currentActivity
,
SearchActivity
.
class
);
currentActivity
.
startActivityForResult
(
intent
,
10086
);
currentActivity
.
overridePendingTransition
(
R
.
anim
.
fade_in
,
R
.
anim
.
fade_out
);
}
@Override
public
void
onAnimationCancel
(
Animator
animation
)
{
}
@Override
public
void
onAnimationRepeat
(
Animator
animation
)
{
}
});
animator
.
start
();
}
}
app/src/main/java/com/base/browserwhite/ui/activity/SearchResultsFragment.java
0 → 100644
View file @
dec8aa00
package
com
.
base
.
browserwhite
.
ui
.
activity
;
import
androidx.fragment.app.Fragment
;
public
class
SearchResultsFragment
extends
Fragment
{
}
app/src/main/java/com/base/browserwhite/ui/fragment/HomeFragment.kt
View file @
dec8aa00
package
com.base.browserwhite.ui.fragment
import
android.R.attr.button
import
android.animation.ObjectAnimator
import
android.content.Intent
import
android.text.TextUtils
import
android.util.Log
import
android.view.KeyEvent
import
android.view.inputmethod.EditorInfo.IME_ACTION_DONE
import
android.widget.TextView
...
...
@@ -27,6 +30,7 @@ import com.base.browserwhite.bean.webSiteGroupBeanList
import
com.base.browserwhite.databinding.FragmentHomeBinding
import
com.base.browserwhite.fcm.NotificationUtil
import
com.base.browserwhite.help.NewsUtils.requestNews
import
com.base.browserwhite.ui.activity.SearchActivity
import
com.base.browserwhite.ui.activity.appprocess.AppProcessActivity
import
com.base.browserwhite.ui.activity.bookmark.BookmarkActivity
import
com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity
...
...
@@ -75,9 +79,13 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
newsAdapter
=
NewsAdapter
(
clickAction
=
{
url
->
requireContext
().
startActivity
(
Intent
(
requireContext
(),
NewsDetailActivity
::
class
.
java
).
apply
{
putExtra
(
"url"
,
url
)
})
requireContext
().
startActivity
(
Intent
(
requireContext
(),
NewsDetailActivity
::
class
.
java
).
apply
{
putExtra
(
"url"
,
url
)
})
},
moreAction
=
{
startActivity
(
Intent
(
requireContext
(),
NewsActivity
::
class
.
java
).
apply
{
...
...
@@ -85,39 +93,61 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
})
})
helper
=
QuickAdapterHelper
.
Builder
(
newsAdapter
).
setTrailingLoadStateAdapter
(
object
:
TrailingLoadStateAdapter
.
OnTrailingListener
{
override
fun
onLoad
()
{
LogEx
.
logDebug
(
TAG
,
"onLoad"
)
requestMore
()
}
QuickAdapterHelper
.
Builder
(
newsAdapter
)
.
setTrailingLoadStateAdapter
(
object
:
TrailingLoadStateAdapter
.
OnTrailingListener
{
override
fun
onLoad
()
{
LogEx
.
logDebug
(
TAG
,
"onLoad"
)
requestMore
()
}
override
fun
onFailRetry
()
{
LogEx
.
logDebug
(
TAG
,
"onFailRetry"
)
requestMore
()
}
override
fun
onFailRetry
()
{
LogEx
.
logDebug
(
TAG
,
"onFailRetry"
)
requestMore
()
}
override
fun
isAllowLoading
():
Boolean
{
LogEx
.
logDebug
(
TAG
,
"isLoading=$isLoading"
)
return
!
isLoading
}
}).
build
()
override
fun
isAllowLoading
():
Boolean
{
LogEx
.
logDebug
(
TAG
,
"isLoading=$isLoading"
)
return
!
isLoading
}
}).
build
()
// 设置预加载,请调用以下方法
// helper.trailingLoadStateAdapter?.preloadSize = 1
helper
.
addBeforeAdapter
(
0
,
HeaderAdapter
{
key
->
when
(
key
)
{
JUNK_CLEANER
->
{
requireContext
().
startActivity
(
Intent
(
requireContext
(),
ScanJunkActivity
::
class
.
java
))
requireContext
().
startActivity
(
Intent
(
requireContext
(),
ScanJunkActivity
::
class
.
java
)
)
}
NEWS
->
{
requireContext
().
startActivity
(
Intent
(
requireContext
(),
NewsActivity
::
class
.
java
))
requireContext
().
startActivity
(
Intent
(
requireContext
(),
NewsActivity
::
class
.
java
)
)
}
APP_PROCESS
->
{
requireContext
().
startActivity
(
Intent
(
requireContext
(),
AppProcessActivity
::
class
.
java
))
requireContext
().
startActivity
(
Intent
(
requireContext
(),
AppProcessActivity
::
class
.
java
)
)
}
BOOKMARK
->
{
requireContext
().
startActivity
(
Intent
(
requireContext
(),
BookMarkActivity
::
class
.
java
)
)
requireContext
().
startActivity
(
Intent
(
requireContext
(),
BookmarkActivity
::
class
.
java
))
}
...
...
@@ -130,7 +160,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
// LogEx.logDebug(TAG, "scrollY=$scrollY oldScrollY=$oldScrollY")
// 检查当前滚动位置
val
firstVisibleItem
:
Int
=
(
binding
.
rv
.
layoutManager
as
LinearLayoutManager
).
findFirstVisibleItemPosition
()
val
firstVisibleItem
:
Int
=
(
binding
.
rv
.
layoutManager
as
LinearLayoutManager
).
findFirstVisibleItemPosition
()
if
(
firstVisibleItem
>
3
)
{
binding
.
ivUp
.
isVisible
=
true
...
...
@@ -141,9 +172,14 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
}
}
y
=
binding
.
searchLayout
.
translationY
binding
.
editWeb
.
setOnClickListener
{
SearchActivity
.
startActivityWithButtonAnimation
(
activity
,
binding
.
searchLayout
)
}
requestMore
()
}
private
var
y
=
0f
fun
requestMore
()
{
isLoading
=
true
helper
.
trailingLoadState
=
LoadState
.
None
...
...
@@ -167,6 +203,17 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
})
}
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
data
:
Intent
?)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
)
val
animator
:
ObjectAnimator
=
ObjectAnimator
.
ofFloat
(
binding
.
searchLayout
,
"translationY"
,
binding
.
searchLayout
.
translationY
,
y
)
animator
.
setDuration
(
500
)
animator
.
start
()
}
override
fun
onResume
()
{
super
.
onResume
()
...
...
@@ -181,7 +228,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
}
val
recommendWebSite
=
webSiteGroupBeanList
.
flatMap
{
it
.
items
}.
filter
{
bean
->
AppPreferences
.
getInstance
().
getBoolean
(
"${bean.id}_${bean.name}"
,
defaultValue
(
bean
.
name
))
AppPreferences
.
getInstance
()
.
getBoolean
(
"${bean.id}_${bean.name}"
,
defaultValue
(
bean
.
name
))
}
val
list
=
arrayListOf
<
WebSiteBean
>()
list
.
addAll
(
recommendWebSite
)
...
...
@@ -257,17 +305,25 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
LinkSearchUtils
.
handleInput
(
content
,
loadUrl
=
{
url
->
requireActivity
().
startActivity
(
Intent
(
requireContext
(),
WebBrowserActivity
::
class
.
java
).
apply
{
putExtra
(
"searchEngine"
,
searchEngine
)
putExtra
(
"url"
,
url
)
})
requireActivity
().
startActivity
(
Intent
(
requireContext
(),
WebBrowserActivity
::
class
.
java
).
apply
{
putExtra
(
"searchEngine"
,
searchEngine
)
putExtra
(
"url"
,
url
)
})
},
performSearch
=
{
url
->
val
searchUrl
=
searchAction
.
invoke
(
url
)
requireActivity
().
startActivity
(
Intent
(
requireContext
(),
WebBrowserActivity
::
class
.
java
).
apply
{
putExtra
(
"searchEngine"
,
searchEngine
)
putExtra
(
"url"
,
searchUrl
)
})
requireActivity
().
startActivity
(
Intent
(
requireContext
(),
WebBrowserActivity
::
class
.
java
).
apply
{
putExtra
(
"searchEngine"
,
searchEngine
)
putExtra
(
"url"
,
searchUrl
)
})
})
return
true
// 返回true表示事件已处理
...
...
app/src/main/res/anim/button_move_to_top_animation.xml
0 → 100644
View file @
dec8aa00
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<translate
android:duration=
"500"
android:fromYDelta=
"0%"
android:toYDelta=
"-100%"
></translate>
</set>
\ No newline at end of file
app/src/main/res/anim/fade_in.xml
0 → 100644
View file @
dec8aa00
<?xml version="1.0" encoding="utf-8"?>
<alpha
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:duration=
"10"
android:fromAlpha=
"0.0"
android:toAlpha=
"1.0"
></alpha>
app/src/main/res/anim/fade_out.xml
0 → 100644
View file @
dec8aa00
<?xml version="1.0" encoding="utf-8"?>
<alpha
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:duration=
"10"
android:fromAlpha=
"1.0"
android:toAlpha=
"0.0"
></alpha>
\ No newline at end of file
app/src/main/res/drawable/bg_stroke_070709.xml
View file @
dec8aa00
...
...
@@ -4,4 +4,5 @@
android:width=
"1.5dp"
android:color=
"#070709"
/>
<corners
android:radius=
"25dp"
/>
<solid
android:color=
"@color/white"
/>
</shape>
\ No newline at end of file
app/src/main/res/layout/activity_search.xml
0 → 100644
View file @
dec8aa00
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"match_parent"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_height=
"match_parent"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/appbar_layout"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:layout_marginHorizontal=
"15dp"
android:layout_marginTop=
"48dp"
android:background=
"@drawable/bg_stroke_070709"
android:gravity=
"center"
android:orientation=
"horizontal"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/fl_search_engine"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_margin=
"10dp"
android:background=
"?android:attr/selectableItemBackground"
android:padding=
"5dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:id=
"@+id/iv_search_engine"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/h_s_google"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"-2dp"
android:layout_marginBottom=
"-2dp"
android:src=
"@mipmap/xuanze"
app:layout_constraintBottom_toBottomOf=
"@id/fl_search_engine"
app:layout_constraintEnd_toEndOf=
"@id/fl_search_engine"
tools:ignore=
"ContentDescription"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<EditText
android:id=
"@+id/edit_web"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginHorizontal=
"5dp"
android:background=
"@null"
android:gravity=
"center_vertical"
android:hint=
"Search or enter website address"
android:imeOptions=
"actionDone"
android:inputType=
"textUri"
android:paddingHorizontal=
"5dp"
android:singleLine=
"true"
android:textColorHint=
"#858587"
android:textSize=
"14sp"
app:layout_constraintEnd_toStartOf=
"@id/fl_scan"
app:layout_constraintStart_toEndOf=
"@id/fl_search_engine"
tools:ignore=
"Autofill,HardcodedText,TextFields"
/>
<FrameLayout
android:id=
"@+id/fl_scan"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_margin=
"10dp"
android:background=
"?android:attr/selectableItemBackground"
android:padding=
"5dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"ContentDescription"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/saoyisao"
/>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_home.xml
View file @
dec8aa00
...
...
@@ -15,7 +15,9 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:layout_marginBottom=
"16dp"
app:layout_scrollFlags=
"scroll|enterAlwaysCollapsed"
tools:ignore=
"ContentDescription"
>
...
...
@@ -80,11 +82,10 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/searchLayout"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:layout_marginHorizontal=
"15dp"
android:layout_marginTop=
"5dp"
android:layout_marginBottom=
"15dp"
android:background=
"@drawable/bg_stroke_070709"
android:gravity=
"center"
android:orientation=
"horizontal"
>
...
...
@@ -125,7 +126,7 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<
EditText
<
TextView
android:id=
"@+id/edit_web"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
...
...
@@ -170,6 +171,7 @@
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:orientation=
"vertical"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
>
...
...
app/src/main/res/values/dimens.xml
View file @
dec8aa00
...
...
@@ -6,6 +6,7 @@
<dimen
name=
"dp_210"
>
210dp
</dimen>
<dimen
name=
"dp_180"
>
180dp
</dimen>
<dimen
name=
"dp_15"
>
15dp
</dimen>
<dimen
name=
"dp_16"
>
16dp
</dimen>
<dimen
name=
"dp_150"
>
150dp
</dimen>
<dimen
name=
"dp_30"
>
30dp
</dimen>
<dimen
name=
"fab_margin"
>
16dp
</dimen>
...
...
@@ -17,6 +18,12 @@
<dimen
name=
"dp_7"
>
7dp
</dimen>
<dimen
name=
"dp_20"
>
20dp
</dimen>
<dimen
name=
"dp_26"
>
26dp
</dimen>
<dimen
name=
"dp_48"
>
48dp
</dimen>
<!--
Refer to App Widget Documentation for margin information
http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout
-->
<dimen
name=
"widget_margin"
>
0dp
</dimen>
<dimen
name=
"dp_258"
>
258dp
</dimen>
<dimen
name=
"dp_250"
>
250dp
</dimen>
...
...
app/src/main/res/values/themes.xml
View file @
dec8aa00
...
...
@@ -5,7 +5,9 @@
<!-- <item name="colorPrimary">@color/my_light_primary</item> -->
</style>
<style
name=
"Theme.BrowserWhite"
parent=
"Base.Theme.BrowserWhite"
/>
<style
name=
"Theme.BrowserWhite"
parent=
"Theme.AppCompat.Light.NoActionBar"
>
</style>
<style
name=
"splash.theme"
parent=
"Theme.AppCompat.DayNight.NoActionBar"
>
<item
name=
"android:windowBackground"
>
@drawable/splash_bp
</item>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment