Commit dec8aa00 authored by wanglei's avatar wanglei

Merge remote-tracking branch 'origin/master'

parents 525681ed dcaa5966
...@@ -205,6 +205,12 @@ ...@@ -205,6 +205,12 @@
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.activity.SearchActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<provider <provider
android:name="androidx.core.content.FileProvider" android:name="androidx.core.content.FileProvider"
......
...@@ -94,6 +94,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -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() { override fun initListener() {
super.initListener() super.initListener()
binding.llHome.setOnClickListener { binding.llHome.setOnClickListener {
......
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()-32f));
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();
}
}
package com.base.browserwhite.ui.activity;
import androidx.fragment.app.Fragment;
public class SearchResultsFragment extends Fragment {
}
package com.base.browserwhite.ui.fragment package com.base.browserwhite.ui.fragment
import android.R.attr.button
import android.animation.ObjectAnimator
import android.content.Intent import android.content.Intent
import android.text.TextUtils import android.text.TextUtils
import android.util.Log
import android.view.KeyEvent import android.view.KeyEvent
import android.view.inputmethod.EditorInfo.IME_ACTION_DONE import android.view.inputmethod.EditorInfo.IME_ACTION_DONE
import android.widget.TextView import android.widget.TextView
...@@ -27,6 +30,7 @@ import com.base.browserwhite.bean.webSiteGroupBeanList ...@@ -27,6 +30,7 @@ import com.base.browserwhite.bean.webSiteGroupBeanList
import com.base.browserwhite.databinding.FragmentHomeBinding import com.base.browserwhite.databinding.FragmentHomeBinding
import com.base.browserwhite.fcm.NotificationUtil import com.base.browserwhite.fcm.NotificationUtil
import com.base.browserwhite.help.NewsUtils.requestNews 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.appprocess.AppProcessActivity
import com.base.browserwhite.ui.activity.bookmark.BookmarkActivity import com.base.browserwhite.ui.activity.bookmark.BookmarkActivity
import com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity import com.base.browserwhite.ui.activity.cleanjunk.ScanJunkActivity
...@@ -75,9 +79,13 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -75,9 +79,13 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
newsAdapter = NewsAdapter( newsAdapter = NewsAdapter(
clickAction = { url -> clickAction = { url ->
requireContext().startActivity(Intent(requireContext(), NewsDetailActivity::class.java).apply { requireContext().startActivity(
putExtra("url", url) Intent(
}) requireContext(),
NewsDetailActivity::class.java
).apply {
putExtra("url", url)
})
}, },
moreAction = { moreAction = {
startActivity(Intent(requireContext(), NewsActivity::class.java).apply { startActivity(Intent(requireContext(), NewsActivity::class.java).apply {
...@@ -85,39 +93,61 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -85,39 +93,61 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
}) })
}) })
helper = helper =
QuickAdapterHelper.Builder(newsAdapter).setTrailingLoadStateAdapter(object : TrailingLoadStateAdapter.OnTrailingListener { QuickAdapterHelper.Builder(newsAdapter)
override fun onLoad() { .setTrailingLoadStateAdapter(object : TrailingLoadStateAdapter.OnTrailingListener {
LogEx.logDebug(TAG, "onLoad") override fun onLoad() {
requestMore() LogEx.logDebug(TAG, "onLoad")
} requestMore()
}
override fun onFailRetry() { override fun onFailRetry() {
LogEx.logDebug(TAG, "onFailRetry") LogEx.logDebug(TAG, "onFailRetry")
requestMore() requestMore()
} }
override fun isAllowLoading(): Boolean { override fun isAllowLoading(): Boolean {
LogEx.logDebug(TAG, "isLoading=$isLoading") LogEx.logDebug(TAG, "isLoading=$isLoading")
return !isLoading return !isLoading
} }
}).build() }).build()
// 设置预加载,请调用以下方法 // 设置预加载,请调用以下方法
// helper.trailingLoadStateAdapter?.preloadSize = 1 // helper.trailingLoadStateAdapter?.preloadSize = 1
helper.addBeforeAdapter(0, HeaderAdapter { key -> helper.addBeforeAdapter(0, HeaderAdapter { key ->
when (key) { when (key) {
JUNK_CLEANER -> { JUNK_CLEANER -> {
requireContext().startActivity(Intent(requireContext(), ScanJunkActivity::class.java)) requireContext().startActivity(
Intent(
requireContext(),
ScanJunkActivity::class.java
)
)
} }
NEWS -> { NEWS -> {
requireContext().startActivity(Intent(requireContext(), NewsActivity::class.java)) requireContext().startActivity(
Intent(
requireContext(),
NewsActivity::class.java
)
)
} }
APP_PROCESS -> { APP_PROCESS -> {
requireContext().startActivity(Intent(requireContext(), AppProcessActivity::class.java)) requireContext().startActivity(
Intent(
requireContext(),
AppProcessActivity::class.java
)
)
} }
BOOKMARK -> { BOOKMARK -> {
requireContext().startActivity(
Intent(
requireContext(),
BookMarkActivity::class.java
)
)
requireContext().startActivity(Intent(requireContext(), BookmarkActivity::class.java)) requireContext().startActivity(Intent(requireContext(), BookmarkActivity::class.java))
} }
...@@ -130,7 +160,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -130,7 +160,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
// LogEx.logDebug(TAG, "scrollY=$scrollY oldScrollY=$oldScrollY") // 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) { if (firstVisibleItem > 3) {
binding.ivUp.isVisible = true binding.ivUp.isVisible = true
...@@ -141,9 +172,14 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -141,9 +172,14 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
} }
} }
y = binding.searchLayout.translationY
binding.editWeb.setOnClickListener {
SearchActivity.startActivityWithButtonAnimation(activity, binding.searchLayout)
}
requestMore() requestMore()
} }
private var y = 0f
fun requestMore() { fun requestMore() {
isLoading = true isLoading = true
helper.trailingLoadState = LoadState.None helper.trailingLoadState = LoadState.None
...@@ -167,6 +203,17 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -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() { override fun onResume() {
super.onResume() super.onResume()
...@@ -181,7 +228,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -181,7 +228,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
} }
val recommendWebSite = webSiteGroupBeanList.flatMap { it.items }.filter { bean -> 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>() val list = arrayListOf<WebSiteBean>()
list.addAll(recommendWebSite) list.addAll(recommendWebSite)
...@@ -257,17 +305,25 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -257,17 +305,25 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
LinkSearchUtils.handleInput( LinkSearchUtils.handleInput(
content, content,
loadUrl = { url -> loadUrl = { url ->
requireActivity().startActivity(Intent(requireContext(), WebBrowserActivity::class.java).apply { requireActivity().startActivity(
putExtra("searchEngine", searchEngine) Intent(
putExtra("url", url) requireContext(),
}) WebBrowserActivity::class.java
).apply {
putExtra("searchEngine", searchEngine)
putExtra("url", url)
})
}, },
performSearch = { url -> performSearch = { url ->
val searchUrl = searchAction.invoke(url) val searchUrl = searchAction.invoke(url)
requireActivity().startActivity(Intent(requireContext(), WebBrowserActivity::class.java).apply { requireActivity().startActivity(
putExtra("searchEngine", searchEngine) Intent(
putExtra("url", searchUrl) requireContext(),
}) WebBrowserActivity::class.java
).apply {
putExtra("searchEngine", searchEngine)
putExtra("url", searchUrl)
})
}) })
return true // 返回true表示事件已处理 return true // 返回true表示事件已处理
......
<?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
<?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>
<?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
...@@ -4,4 +4,5 @@ ...@@ -4,4 +4,5 @@
android:width="1.5dp" android:width="1.5dp"
android:color="#070709" /> android:color="#070709" />
<corners android:radius="25dp" /> <corners android:radius="25dp" />
<solid android:color="@color/white"/>
</shape> </shape>
\ No newline at end of file
<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
...@@ -15,7 +15,9 @@ ...@@ -15,7 +15,9 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" 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" app:layout_scrollFlags="scroll|enterAlwaysCollapsed"
tools:ignore="ContentDescription"> tools:ignore="ContentDescription">
...@@ -80,11 +82,10 @@ ...@@ -80,11 +82,10 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/searchLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginHorizontal="15dp" android:layout_marginHorizontal="15dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="15dp"
android:background="@drawable/bg_stroke_070709" android:background="@drawable/bg_stroke_070709"
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="horizontal">
...@@ -125,7 +126,7 @@ ...@@ -125,7 +126,7 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<EditText <TextView
android:id="@+id/edit_web" android:id="@+id/edit_web"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
...@@ -170,6 +171,7 @@ ...@@ -170,6 +171,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="vertical" android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"> app:layout_behavior="@string/appbar_scrolling_view_behavior">
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<dimen name="dp_210">210dp</dimen> <dimen name="dp_210">210dp</dimen>
<dimen name="dp_180">180dp</dimen> <dimen name="dp_180">180dp</dimen>
<dimen name="dp_15">15dp</dimen> <dimen name="dp_15">15dp</dimen>
<dimen name="dp_16">16dp</dimen>
<dimen name="dp_150">150dp</dimen> <dimen name="dp_150">150dp</dimen>
<dimen name="dp_30">30dp</dimen> <dimen name="dp_30">30dp</dimen>
<dimen name="fab_margin">16dp</dimen> <dimen name="fab_margin">16dp</dimen>
...@@ -17,6 +18,12 @@ ...@@ -17,6 +18,12 @@
<dimen name="dp_7">7dp</dimen> <dimen name="dp_7">7dp</dimen>
<dimen name="dp_20">20dp</dimen> <dimen name="dp_20">20dp</dimen>
<dimen name="dp_26">26dp</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="widget_margin">0dp</dimen>
<dimen name="dp_258">258dp</dimen> <dimen name="dp_258">258dp</dimen>
<dimen name="dp_250">250dp</dimen> <dimen name="dp_250">250dp</dimen>
......
...@@ -5,7 +5,9 @@ ...@@ -5,7 +5,9 @@
<!-- <item name="colorPrimary">@color/my_light_primary</item> --> <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
</style> </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"> <style name="splash.theme" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="android:windowBackground">@drawable/splash_bp</item> <item name="android:windowBackground">@drawable/splash_bp</item>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment