当使用新的Android 4.4 KitKat API中的半透明状态和导航栏时,设置fitsSystemWindows="true"和最初clipToPadding="false"的ListView工作.fitsSystemWindows="true"将列表保留在操作栏下方和导航栏上方,clipToPadding="false"允许列表在透明导航栏下滚动,并使列表中的最后一项向上滚动到足以通过导航栏.
但是,当您Fragment通过消失FragmentTransaction的效果将内容替换为另一个内容时fitsSystemWindows,该片段会进入操作栏和导航栏.
我在这里有一个演示源代码的代码库以及一个可下载的APK作为示例:https://github.com/afollestad/kitkat-transparency-demo.要查看我正在谈论的内容,请从运行KitKat的设备中打开演示应用,点击列表中的项目(这将打开另一个活动),然后点击打开的新活动中的项目.替换内容的片段位于操作栏下,并且clipToPadding无法正常工作(当您向下滚动时,导航栏将覆盖列表中的最后一项).
有任何想法吗?需要澄清吗?我发布了为我的雇主开发的个人应用程序的前后屏幕截图.

我正在开发的应用程序显示图像网格.点击图像时,它会进入详细信息视图.详细信息视图包含一个ViewPager,允许您在网格中的每个图像之间滑动.这是通过传递路径列表(包含网格中的每个图像)以及被点击的图像的偏移来完成的,因此可以将ViewPager设置为最初显示该页面.
在ViewPager中当前偏移页面的Fragment内部进行共享元素转换的最佳方法是什么?网格(RecyclerView)图像应扩展为当前页面中的全屏图像.我看到了推迟和恢复活动转换的能力,因此应用程序将等待显示共享元素转换,直到从磁盘加载图像.但我希望能够使其在视图寻呼机中对正确的页面进行动画处理,并在用户返回时退出到当前页面的任何内容(因为您可以在页面之间滑动).如果您现在滑动到其他页面,则初始页面会回显到网格中.
目前,我使用"image_ [index]"格式的transitionName为视图寻呼机的片段中的每个图像分配.当我启动详细信息活动时,我使用相同的transitionName,索引是偏移量.
与此相关,我也想知道如何使用长按压使涟漪起作用.当您更改视图的激活状态时,它似乎取消了波纹.我想要一种类似于Gmail的效果,其中纹波重新开始并在长按完成后快速完成并触发激活状态.
animation android activity-transition shared-element-transition sharedelementcallback
我的应用程序的某些用户遇到此崩溃,似乎可能与三星设备有关.有没有其他人遇到过这个问题并找到了解决方案?
java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$layout
at android.support.v7.app.ActionBarActivityDelegateBase.ensureSubDecor(ActionBarActivityDelegateBase.java:297)
at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:225)
at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
at com.afollestad.impression.ui.MainActivity.onCreate(MainActivity.java:160)
at android.app.Activity.performCreate(Activity.java:5451)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2359)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2453)
at android.app.ActivityThread.access$900(ActivityThread.java:173)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5579)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud)
第160行设置活动的内容视图.内容视图是这样的:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.afollestad.lessen.ui.MainActivity"
android:fitsSystemWindows="true">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="?popup_theme" />
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<FrameLayout
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:layout_gravity="start">
<fragment
android:id="@+id/navigation_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.afollestad.impression.fragments.NavDrawerFragment"
tools:layout="@layout/fragment_navdrawer"
android:tag="NAV_DRAWER" …Run Code Online (Sandbox Code Playgroud) 我在哪里可以找到一个好的XMPP(Jabber)教程,其中包含有关发送到Jabber客户端和服务器的XML的详细信息.我看过xmpp.org网站,但是他们在那里展示的内容令人困惑,并没有帮助我学习.
我想在C#中编写一个XMPP客户端,它使用TcpClient连接到服务器并发送/接收XML数据.
有谁知道如何使半透明导航栏(在4.4上)重叠并在其下显示内容视图(在本例中为ListView)?
如果在此屏幕截图中显示透明(这是我正在为我的雇主开发的应用程序),但如果列表位于屏幕底部下方,则导航栏下方的列表项将被其覆盖,无法看到.
我要做的一个例子是Nexus 5上的Google Edition Launcher的Google Now组件.导航栏完全透明,并显示TextView及其下的所有内容,您看到的导航栏的唯一部分按钮本身的轮廓.

我正在使用AppCompat,我的应用程序具有动态颜色主题.我希望能够更改primaryColor和accentColor属性,以便UI元素与主题颜色匹配(例如进度条,复选框等).
我可以为很多视图手动设置颜色,但是对于像复选框和进度条这样的元素来说,这很复杂,我不想生成自己的drawable.显然,使用静态XML也不适用于此.
是否可以从代码中更改活动的主题属性?
我试图将一个带有动作(使用故事)的开放图形对象发布到Facebook,但我总是收到一个错误,但没有给我任何细节.我将我正在使用的所有代码总结为一个方法给你们:
- (void)publishToGraph {
NSMutableDictionary<FBOpenGraphObject> *object = [FBGraphObject openGraphObjectForPost];
object.provisionedForPost = YES;
object[@"title"] = @"Example title";
object[@"type"] = @"rs-coupcash";
object[@"description"] = @"Example description";
object[@"url"] = @"http://exampleurl.com/idk";
object[@"image"] = @[@{@"url": @"http://exampleurl.com/example_url.png", @"user_generated" : @"true" }];
[FBSession openActiveSessionWithPublishPermissions:@[@"email", @"public_profile", @"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
if (!error && state == FBSessionStateOpen) {
[FBRequestConnection startForPostOpenGraphObject:object completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if(!error) {
NSString *objectId = [result objectForKey:@"id"];
NSLog(@"Object ID: %@", objectId);
id<FBOpenGraphAction> actionObject = (id<FBOpenGraphAction>)[FBGraphObject graphObject];
[actionObject …Run Code Online (Sandbox Code Playgroud) facebook facebook-graph-api ios facebook-opengraph facebook-ios-sdk
在构建/运行我的项目时,我突然遇到了这个问题.
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/Users/aidanfollestad/Documents/android-sdk/build-tools/21.1.2/dx --dex --no-optimize --output /Users/aidanfollestad/Android Projects/Impression/app/build/intermediates/dex/debug --input-list=/Users/aidanfollestad/Android Projects/Impression/app/build/intermediates/tmp/dex/debug/inputList.txt
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502)
at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277)
at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
Run Code Online (Sandbox Code Playgroud)
我的Gradle文件包含:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.14.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: …Run Code Online (Sandbox Code Playgroud) 是否可以直接从 API 初始化新的 Hangouts on Air 广播/流?我正在尝试将环聊直播用于我网站的直播系统,但我在 YouTube 直播 API 中没有看到任何允许通过环聊直播创建流的 API 方法(看起来它需要自定义视频源)。如果这是不可能的,有没有办法使用 Google 按钮来初始化环聊直播,然后将其实时嵌入网页(无需预定义流)?
我知道有诸如 OBS 之类的实时流媒体协议,但这显然在服务器上非常密集。对于这种特定情况(我不能过多谈论),使用 Google 的庞大基础架构会更方便。
youtube youtube-api hangout youtube-livestreaming-api hangouts-api
我SwipeRefreshLayout在活动中显示的片段中使用了一个.刷卡确实执行了刷新,但是在我向下拉后它向右上升并且没有不确定进度的指示(动画进度条).它刚刚消失,但在完成后仍然会调用onRefresh().这是我的布局......
活动布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ListView
android:id="@+id/left_drawer"
android:layout_width="@dimen/nav_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:dividerHeight="1px"
android:background="@color/drawer_background_gray"
android:clipToPadding="false"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
片段布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"/>
</android.support.v4.widget.SwipeRefreshLayout>
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/empty_text_size"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:textColor="@color/brand_green"/>
<ProgressBar
android:id="@android:id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateOnly="true"
android:visibility="gone"
android:layout_gravity="center"/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
用于初始化Fragment布局的代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) …Run Code Online (Sandbox Code Playgroud) 我反汇编了.NET'System'DLL并查看了变量类(string,int,byte等)的源代码,看看我是否可以弄清楚如何创建一个可以接受值的类.我注意到"Int32"类继承了以下内容:IComparable,IFormattable,IConvertible,IComparable,IEquatable.
String和Int32类是不可继承的,我无法弄清楚这些继承的接口允许类保存值.我想要的是这样的:
public class MyVariable : //inherits here
{
//Code in here that allows it to get/set the value
}
public static class Main(string[] args)
{
MyVariable a = "This is my own custom variable!";
MyVariable b = 2976;
if(a == "Hello") { }
if(b = 10) { }
Console.WriteLine(a.ToString());
Console.WriteLine(a.ToString());
}
Run Code Online (Sandbox Code Playgroud) 我的同事有一个存储帐户信息的数据库;帐户的 SHA256 散列密码和盐值作为原始二进制数据(blob)存储在列中。
密码在 PHP 中使用这个散列(true 表示原始输出):
hash("sha256", $salt . $password, true);
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 Node.js 服务器上实现身份验证,该服务器必须从 PHP 取回存储在数据库中的相同散列密码,这似乎不起作用:
/**
* Validates a password sent by an end user by comparing it to the
* hashed password stored in the database. Uses the Node.js crypto library.
*
* @param password The password sent by the end user.
* @param dbPassword The hashed password stored in the database.
* @param dbSalt The encryption salt stored in the database.
*/
function validatePassword(password, dbPassword, dbSalt) …Run Code Online (Sandbox Code Playgroud) android ×7
fragment ×2
transparent ×2
xml ×2
.net ×1
animation ×1
attributes ×1
build-tools ×1
c# ×1
crash ×1
dynamic ×1
encryption ×1
facebook ×1
gradle ×1
hangout ×1
hangouts-api ×1
inheritance ×1
int ×1
ios ×1
javascript ×1
navigation ×1
node.js ×1
overlay ×1
php ×1
runtime ×1
string ×1
themes ×1
variables ×1
view ×1
xmpp ×1
youtube ×1
youtube-api ×1