Java-Android:对SearchView进行动画处理

Java-Android:对SearchView进行动画处理,第1张

概述我正在尝试实现动画搜索视图(带有简单的扩展/折叠动画),但是该论坛中的所有答案均不起作用.<itemandroid:id="@+id/action_search"android:orderInCategory="100"android:title="@string/action_search"app:actionViewClass="android.support.v7.widget.S

我正在尝试实现动画搜索视图(带有简单的扩展/折叠动画),但是该论坛中的所有答案均不起作用.

<item    androID:ID="@+ID/action_search"    androID:orderIncategory="100"    androID:title="@string/action_search"    app:actionVIEwClass="androID.support.v7.Widget.SearchVIEw"    androID:icon="@drawable/ic_search_white_48px"    app:showAsAction="always"/>

我做了什么

@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) {    // Inflate the menu; this adds items to the action bar if it is present.    getMenuInflater().inflate(R.menu.main, menu);    SearchVIEw searchVIEw = (SearchVIEw) menu.findItem(R.ID.action_search).getActionVIEw();    //Get the ID for the search bar linearLayout    int searchbarID = searchVIEw.getContext().getResources().getIDentifIEr("androID:ID/search_bar", null, null);    //Get the search bar linearlayout    linearLayout searchbar = (linearLayout)             searchVIEw.findVIEwByID(searchbarID);    //Give the linearlayout a Transition animation.    searchbar.setLayoutTransition(new LayoutTransition());    return true;}

所有错误:

E/AndroIDRuntime: FATAL EXCEPTION: main              Process: com.daveslab.wIDevIEw, PID: 2459              java.lang.NullPointerException: Attempt to invoke virtual method 'voID androID.Widget.linearLayout.setLayoutTransition(androID.animation.LayoutTransition)' on a null object reference                  at com.daveslab.wIDevIEw.MainActivity.onCreateOptionsMenu(MainActivity.java:69)                  at androID.app.Activity.onCreatePanelMenu(Activity.java:2846)                  at androID.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:360)                  at androID.support.v7.vIEw.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:88)                  at androID.support.v7.app.AppCompatDelegateImplBase$AppCompatwindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:331)                  at androID.support.v7.vIEw.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:88)                  at androID.support.v7.app.Toolbaractionbar.populateOptionsMenu(Toolbaractionbar.java:454)                  at androID.support.v7.app.Toolbaractionbar.run(Toolbaractionbar.java:61)                  at androID.os.Handler.handleCallback(Handler.java:739)                  at androID.os.Handler.dispatchMessage(Handler.java:95)                  at androID.os.Looper.loop(Looper.java:148)                  at androID.app.ActivityThread.main(ActivityThread.java:5417)                  at java.lang.reflect.Method.invoke(Native Method)                  at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)                  at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:616)

values.xml中的错误(所有图标均在项目中具有正确的名称):

Error:(1605, 21) No resource found that matches the given name: attr 'searchBackIcon'.

错误:(1602,21)找不到与给定名称匹配的资源:attr’searchBackground’.
错误:(1604,21)找不到与给定名称匹配的资源:attr’searchCloseIcon’.
错误:(1606,21)找不到与给定名称匹配的资源:attr’searchSuggestionBackground’.
错误:(1603,21)找不到与给定名称匹配的资源:attr’searchVoiceIcon’.
错误:(1605,21)找不到与给定名称匹配的资源:attr’searchBackIcon’.
错误:(1602,21)找不到与给定名称匹配的资源:attr’searchBackground’.
错误:(1604,21)找不到与给定名称匹配的资源:attr’searchCloseIcon’.
错误:(1606,21)找不到与给定名称匹配的资源:attr’searchSuggestionBackground’.
错误:(1603,21)找不到与给定名称匹配的资源:attr’searchVoiceIcon’.
错误:任务’:app:processDeBUGResources’的执行失败.
com.androID.IDe.common.process.ProcessException:无法执行aapt.

解决方法:

有一种更简单的方法(实际上,只有两行代码),而且没有错误.您需要做的是像以前一样在onCreateOptionsMenu()方法中填充SearchVIEw,但要避免在设置转换的代码行中使用,因为不再需要它们.

接下来,像这样重写onoptionsItemSelected():

@OverrIDepublic boolean onoptionsItemSelected(final MenuItem item) {    switch(item.getItemID()) {        case R.ID.action_search:            TransitionManager.beginDelayedTransition((VIEwGroup) getActivity().findVIEwByID(R.ID.toolbar));            MenuItemCompat.expandActionVIEw(item);            return true;    }    return super.onoptionsItemSelected(item);}

此代码准备一个过渡并侦听工具栏布局中的更改.当SearchVIEw出现时,动画开始.它使用与KitKat相同的API,但可从ICS开始使用.在您的build.gradle中:

compile 'com.androID.support:Transition:24.2.1'

如果您不喜欢默认值,也可以输入customize the transition.

总结

以上是内存溢出为你收集整理的Java-Android:对SearchView进行动画处理全部内容,希望文章能够帮你解决Java-Android:对SearchView进行动画处理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1094849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存