我定义了一个波纹drawable并将其设置为listview项目视图背景的背景.它几乎可以正常工作,但有时涟漪效应不会出现在印刷机上.
这是波纹可绘制代码:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item>
<selector>
<item android:state_activated="true">
<shape><solid android:color="?android:attr/colorButtonNormal"/>
</shape>
</item>
<item>
<shape><solid android:color="@android:color/transparent"/>
</shape>
</item>
</selector>
</item>
</ripple>
Run Code Online (Sandbox Code Playgroud)
我有一个导航抽屉,使用这个抽屉作为抽屉物品的背景:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/navigation_menu_height"
android:orientation="horizontal"
android:background="@drawable/listItemBackground">
....
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
但是,每次打开应用程序时,默认选中的项目在按下时都不会显示涟漪效果.但是在我选择另一个项目然后再次选择它之后,一切都会好起来的.
我对另一个几乎相同的ListView使用完全相同,只是选择模式是多个.而这一次,只要选择了项目,项目就不会显示出涟漪效应.
在另一个未指定选择模式的listView中,只有第一个项目显示涟漪效应,而其他项目的行为与较低的Android版本相同.
我真的不知道如何让它适用于所有场景.也许它真的与ListView的选择模式有关?
==== 编辑 ====
我刚为所有这三个listView添加了属性drawSelectorOnTop,现在清除了前两个问题.但是对于第三个,它现在变成这样:
涟漪效果对所有项目都有效,除了第一个显示两个涟漪的项目!其中一个从我的手指按下的位置开始,而另一个始终从中间开始!
==== 再次编辑 ====好了,现在我调整drawable将激活状态移动到ripple节点之外,并与listview的drawSelectorOnTop属性一起,问题现在完全消失了.
自从我有时间处理我的应用程序已经有好几个月了.今天我下载了最新的Android Studio和SDK,我在构建应用程序后发现了一个问题.
我的AndroidManifest文件不需要GET_ACCOUNTS或USE_CREDENTIALS的任何权限,但是当我尝试在Google Play商店中上传应用时,它们会显示为新添加的权限.我确实在游戏中使用了Google Play游戏服务,但在我做这次更新之前它并不是这样.
有人知道为什么吗?我用Google搜索了一段时间但找不到任何线索..
我想在Android Lollipop的应用程序中实现共享元素转换.在我阅读了文档,SO问题和一些帖子之后我决定试一试,但现在我遇到了问题.
场景是我有两个片段容器(用于平板电脑),就像普通的列表/详细设计模式一样.
我想在触摸列表项时执行列表片段到详细信息片段之间的共享元素转换.详细信息片段的输入正常,但只要按下后退按钮,应用程序就会在转换框架代码中崩溃并显示NullPointerException.
共享元素转换是否支持该方案?
以下是启动详细信息片段的代码:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment fragment = DetailFragment.create((int)id);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
View title = view.findViewById(R.id.item_name);
title.setTransitionName("title");
listFragment.setSharedElementReturnTransition(
TransitionInflater.from(this).inflateTransition(R.transition.change_bounds));
listFragment.setExitTransition(
TransitionInflater.from(this).inflateTransition(android.R.transition.explode));
fragment.setSharedElementEnterTransition(
TransitionInflater.from(this).inflateTransition(R.transition.change_bounds));
fragment.setEnterTransition(
TransitionInflater.from(this).inflateTransition(android.R.transition.explode));
ft.addSharedElement(title, "title");
}
else {
ft.setCustomAnimations(R.anim.slide_in_right, 0, 0, R.anim.slide_out_right);
}
ft.replace(R.id.detail_panel, fragment)
.addToBackStack(null)
.commit();
Run Code Online (Sandbox Code Playgroud)
Logcat在这里:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v4.app.Fragment.getAllowReturnTransitionOverlap()' on a null object reference
at android.support.v4.app.BackStackRecord.configureTransitions(BackStackRecord.java:1201)
at android.support.v4.app.BackStackRecord.beginTransition(BackStackRecord.java:1029)
at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:883)
at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1541)
at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:502)
at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:176)
...
Run Code Online (Sandbox Code Playgroud) android-fragments android-transitions android-5.0-lollipop shared-element-transition
我最近将我的项目从AdMob SDK迁移到了Google服务广告,但是我对Google服务广告遇到了一个小问题.
我在活动中有一个横幅广告视图,我会动态调整布局中的按钮,具体取决于广告是否已加载.我使用AdMob SDK时工作正常,但现在使用Google服务广告时,在加载广告之前,横幅始终保留为空白.如果广告无法加载(比如没有网络),那么空白视图就在那里,这相当丑陋!这也是我想动态调整布局的原因...
我改变代码时错过了什么?谢谢你的帮助!
这是java代码和布局文件的摘录:
Java的:
import com.google.android.gms.ads.*;
...
public class MyActivity extends Activity {
...
@Override
public void onCreate(Bundle savedInstanceState) {
...
AdView adView = (AdView)findViewById(R.id.ad);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}
}
Run Code Online (Sandbox Code Playgroud)
布局XML:
...
<com.google.android.gms.ads.AdView
android:id="@+id/ad"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adUnitId="AD_PUB_ID"
ads:adSize="BANNER"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud) 我想在ActionBar中启用导航功能,并在http://developer.android.com/guide/topics/ui/actionbar.html上关注此文档.
但是当我检查我的应用程序(在Android 4.0上)时,应用程序图标没有显示,而只显示左侧插入符号.
我检查了android清单文件,java文件和布局文件,但仍然不知道如何让它工作....
这是AndroidManifest.xml:
...
<activity
android:name="com.test.HelpActivity"
android:label="@string/help"
android:parentActivityName="com.test.HomeActivity"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
android:screenOrientation="portrait" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.test.HomeActivity" />
</activity>
...
Run Code Online (Sandbox Code Playgroud)
这是Java代码:
...
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
public class HelpActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_help);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
}
谢谢你的帮助!
=====更新=====
我做了一些测试,这是我得到的:
在Android模拟器(2.3)上,它完美无缺.
在Android模拟器(4.1.2)上,它完美无缺.
在Android模拟器(4.0)上,它看起来很好,但是当我单击主页/向上按钮时,没有任何反应并且logcat显示:清单中的bad ParentActivityName'HomeActivity'
在我的手机(4.0.3)上,只显示左侧插入符号,但导航工作正常.
在Android模拟器(4.3)上,它工作正常,但可聚焦区域成为应用程序图标+应用程序标题.(那是当我按下这个长区域内的任何地方时,它会突出显示并触发导航事件)
我现在完全失去了......猜猜它可能是某些Android版本中的一些错误.
我在Android Studio的一个flavor文件夹下添加一个包很麻烦:在我右键单击java文件夹后,我看不到'Package'或'Java Classes'选项!
我做了完全相同的另一种味道,它很好..现在我被困在这里,不知道它是AS的错误或我做了什么.有人帮我请!
(我用谷歌搜索它并且没有解决它到目前为止我发现的)
======= 编辑 ========
我关闭项目并创建一个全新的空项目,现在甚至在主文件夹中,当我右键单击我添加的java文件夹时,我找不到'Java Classes'或'Package'.
但是,如果我只是在java下用类创建包的文件夹,并进行构建,它将最终识别并生成java蓝色,然后如果我右键单击蓝色java文件夹,我就能看到菜单.
所以这听起来像AS中的一些错误.
如果我只需要引导板功能,因此我不想在游戏中添加任何成就,那么无论如何都要这样做吗?目前,我可以看到在开发人员控制台中发布之前至少需要5个成就.
我知道添加5个虚拟成就可以工作,但我想知道是否有任何我错过的设置.
非常感谢您的帮助/澄清!