小编afo*_*tad的帖子

Android 4.4 - 半透明状态/导航栏 - fitsSystemWindows/clipToPadding无法通过片段事务处理

当使用新的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无法正常工作(当您向下滚动时,导航栏将覆盖列表中的最后一项).

有任何想法吗?需要澄清吗?我发布了为我的雇主开发的个人应用程序的前后屏幕截图.

一 二

android transparent fragment android-4.4-kitkat

27
推荐指数
4
解决办法
2万
查看次数

ViewPager片段 - 共享元素转换

我正在开发的应用程序显示图像网格.点击图像时,它会进入详细信息视图.详细信息视图包含一个ViewPager,允许您在网格中的每个图像之间滑动.这是通过传递路径列表(包含网格中的每个图像)以及被点击的图像的偏移来完成的,因此可以将ViewPager设置为最初显示该页面.

在ViewPager中当前偏移页面的Fragment内部进行共享元素转换的最佳方法是什么?网格(RecyclerView)图像应扩展为当前页面中的全屏图像.我看到了推迟和恢复活动转换的能力,因此应用程序将等待显示共享元素转换,直到从磁盘加载图像.但我希望能够使其在视图寻呼机中对正确的页面进行动画处理,并在用户返回时退出到当前页面的任何内容(因为您可以在页面之间滑动).如果您现在滑动到其他页面,则初始页面会回显到网格中.

目前,我使用"image_ [index]"格式的transitionName为视图寻呼机的片段中的每个图像分配.当我启动详细信息活动时,我使用相同的transitionName,索引是偏移量.

与此相关,我也想知道如何使用长按压使涟漪起作用.当您更改视图的激活状态时,它似乎取消了波纹.我想要一种类似于Gmail的效果,其中纹波重新开始并在长按完成后快速完成并触发激活状态.

animation android activity-transition shared-element-transition sharedelementcallback

26
推荐指数
1
解决办法
1万
查看次数

崩溃:java.lang.NoClassDefFoundError:android.support.v7.appcompat.R $ layout

我的应用程序的某些用户遇到此崩溃,似乎可能与三星设备有关.有没有其他人遇到过这个问题并找到了解决方案?

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)

crash android noclassdeffounderror android-appcompat

14
推荐指数
2
解决办法
1万
查看次数

我在哪里可以找到一个好的XMPP(Jabber)教程?

我在哪里可以找到一个好的XMPP(Jabber)教程,其中包含有关发送到Jabber客户端和服务器的XML的详细信息.我看过xmpp.org网站,但是他们在那里展示的内容令人困惑,并没有帮助我学习.

我想在C#中编写一个XMPP客户端,它使用TcpClient连接到服务器并发送/接收XML数据.

c# xml xmpp

9
推荐指数
3
解决办法
1万
查看次数

半透明导航栏(Android 4.4) - 显示内容

有谁知道如何使半透明导航栏(在4.4上)重叠并在其下显示内容视图(在本例中为ListView)?

如果在此屏幕截图中显示透明(这是我正在为我的雇主开发的应用程序),但如果列表位于屏幕底部下方,则导航栏下方的列表项将被其覆盖,无法看到.

我要做的一个例子是Nexus 5上的Google Edition Launcher的Google Now组件.导航栏完全透明,并显示TextView及其下的所有内容,您看到的导航栏的唯一部分按钮本身的轮廓.

截图

navigation android overlay transparent android-4.4-kitkat

7
推荐指数
1
解决办法
1万
查看次数

Android:如何在运行时从代码动态更改主题属性

我正在使用AppCompat,我的应用程序具有动态颜色主题.我希望能够更改primaryColoraccentColor属性,以便UI元素与主题颜色匹配(例如进度条,复选框等).

我可以为很多视图手动设置颜色,但是对于像复选框和进度条这样的元素来说,这很复杂,我不想生成自己的drawable.显然,使用静态XML也不适用于此.

是否可以从代码中更改活动的主题属性?

android attributes themes runtime dynamic

7
推荐指数
0
解决办法
2527
查看次数

Facebook iOS SDK错误 - 发布开放图表操作

我试图将一个带有动作(使用故事)的开放图形对象发布到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

5
推荐指数
1
解决办法
787
查看次数

构建工具21.1.2 - 意外的顶级异常

在构建/运行我的项目时,我突然遇到了这个问题.

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)

android build-tools gradle android-studio

5
推荐指数
2
解决办法
6280
查看次数

是否可以从 API 创建新的环聊直播/流媒体?

是否可以直接从 API 初始化新的 Hangouts on Air 广播/流?我正在尝试将环聊直播用于我网站的直播系统,但我在 YouTube 直播 API 中没有看到任何允许通过环聊直播创建流的 API 方法(看起来它需要自定义视频源)。如果这是不可能的,有没有办法使用 Google 按钮来初始化环聊直播,然后将其实时嵌入网页(无需预定义流)?

我知道有诸如 OBS 之类的实时流媒体协议,但这显然在服务器上非常密集。对于这种特定情况(我不能过多谈论),使用 Google 的庞大基础架构会更方便。

youtube youtube-api hangout youtube-livestreaming-api hangouts-api

5
推荐指数
1
解决办法
1342
查看次数

SwipeRefreshLayout不显示任何刷新指示

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)

xml android view fragment swiperefreshlayout

3
推荐指数
1
解决办法
8370
查看次数

制作自己的"int"或"string"类

我反汇编了.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)

.net string variables int inheritance

2
推荐指数
1
解决办法
511
查看次数

什么是 PHP 哈希函数的 Node.js 等效项(包括盐和原始输出)?

我的同事有一个存储帐户信息的数据库;帐户的 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)

javascript php authentication encryption node.js

2
推荐指数
1
解决办法
2345
查看次数