小编Che*_*eng的帖子

正确的方法来执行区域设置比较

目前,我想知道我的应用程序中正在加载哪个属性文件.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package example0;

import java.util.Locale;

/**
 *
 * @author yccheok
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //Locale.setDefault(Locale.SIMPLIFIED_CHINESE);     // Bundle_zh_CH.properties will be loaded.
        //Locale.setDefault(Locale.CHINA);                  // Bundle_zh_CH.properties will be loaded.
        //Locale.setDefault(Locale.TRADITIONAL_CHINESE);    // Bundle.properties will be loaded.
        //Locale.setDefault(Locale.CHINESE);                // Bundle.properties will be loaded.

        String Hello = java.util.ResourceBundle.getBundle("example0/Bundle").getString("HELLO");
        System.out.println(Hello);

        System.out.println("Locale.SIMPLIFIED_CHINESE's language …
Run Code Online (Sandbox Code Playgroud)

java

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

如何转义要传递给DecimalFormat的字符串

我可以知道如何将字符串转义为十进制格式吗?

// currencySymbolPrefix can be any string.
NumberFormat numberFormat = new DecimalFormat(currencySymbolPrefix + "#,##0.00");
Run Code Online (Sandbox Code Playgroud)

我如何逃脱currencySymbolPrefix,以便它可能包含任何字符,包括'#',并且不会被解释为模式之一.

请不要建议

NumberFormat numberFormat = new DecimalFormat("#,##0.00");
final String output = currencySymbolPrefix + numberFormat.format(number);
Run Code Online (Sandbox Code Playgroud)

因为我的供应商的方法只接受单个NumberFormat.

java

11
推荐指数
2
解决办法
3000
查看次数

计算机编程艺术中的近似等和基本相等之间的差异

我从其他地方得到了这段代码片段.根据网站管理员的说法,代码是从Knuth的计算机编程艺术中挑选出来

由于我没有那本书的副本,我可否知道这两个功能有什么区别?

bool approximatelyEqual(float a, float b, float epsilon)
{
    return fabs(a - b) <= ( (fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}

bool essentiallyEqual(float a, float b, float epsilon)
{
    return fabs(a - b) <= ( (fabs(a) > fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
Run Code Online (Sandbox Code Playgroud)

algorithm floating-point pseudocode approximation

11
推荐指数
3
解决办法
1123
查看次数

这种常见做法是避免在字典中找不到密钥

我想知道,以下样式是否是一种常见的做法,以避免在词典中找不到键?

# default is 0
value = my_dic[100] if 100 in my_dic else 0
Run Code Online (Sandbox Code Playgroud)

python

11
推荐指数
1
解决办法
8893
查看次数

使用主题完全透明的ActionBarSherlock

我正在使用ActionBarSherlock 4.0.2.

我需要一个完全透明的动作条(没有霓虹色底部分隔线).因此,我有以下风格:

<style name="AppTheme" parent="@style/Theme.Sherlock">
    <item name="windowActionBarOverlay">true</item>
    <item name="icon">@drawable/ic_home</item>
    <item name="titleTextStyle">@style/ActionBarCompatTitle</item>
    <item name="android:windowFullscreen">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

通过使用上面的代码,我仍然会有以下效果.

SherlockFragmentActivity机智分频器和半透明背景

为了禁用后台,我将以下代码放入SherlockFragmentActivity#onCreate.然后问题消失了.

getSupportActionBar().setBackgroundDrawable(null);
Run Code Online (Sandbox Code Playgroud)

SherlockFragmentActivity没有分隔线和透明背景

但是,我希望看到解决方案在styles.xml而不是Java代码中实现,因为我有许多其他设备具有不同的屏幕配置.我将styles.xml修改为以下内容,而不使用Java代码中前面提到的修复程序.

<style name="AppTheme" parent="@style/Theme.Sherlock">
    <item name="windowActionBarOverlay">true</item>
    <item name="icon">@drawable/ic_home</item>
    <item name="titleTextStyle">@style/ActionBarCompatTitle</item>
    <item name="android:windowFullscreen">true</item>

    <item name="android:background">@drawable/transparent</item>
    <item name="background">@drawable/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但是,霓虹灯分频器仍然可见.似乎我的修复使用android:backgroundbackground不起作用.我错过了什么吗?

android dialog transparent actionbarsherlock

11
推荐指数
1
解决办法
7401
查看次数

操作栏列表导航+选项卡导航 - 微调器的位置不在最左侧

根据Jake的说法,在 带有操作栏和标签的Android布局中,我们决定遵循他的第二个建议.

使用操作栏中的选项卡导航,并使用微调器设置自定义视图

与ActionBarSherlock本身的IcsSpinner一起,我们设法让它在Gingerbread和ICS中都能正常工作.

但是,在横向模式下,我们仍然会遇到以下问题.

在此输入图像描述

注意,微调器("投资组合1")位于PORTFOLIO选项卡和搜索图标之间.我们想要的是,微调器位于WATCHLIST选项卡的左侧.

我们可以尝试一下吗?

谢谢.

android actionbarsherlock android-actionbar

11
推荐指数
1
解决办法
2629
查看次数

如果我使用和不使用IvParameterSpec启动AES密码,是否有任何区别

我想知道,如果我使用和不使用IvParameterSpec启动AES密码,有什么区别吗?

使用IvParameterSpec

SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, new IvParameterSpec(new byte[16]));
Run Code Online (Sandbox Code Playgroud)

没有IvParameterSpec

SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
Run Code Online (Sandbox Code Playgroud)

我测试了一些样本测试数据,他们的加密和解密结果相同.

但是,由于我不是安全专家,我不想错过任何东西,并创建一个潜在的安全循环漏洞.我在想,这是正确的方法吗?

java security encryption android aes

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

使用DefaultItemAnimator时,StaggeredGridLayoutManager的移动动画被破坏

我有一个非常直接的实现使用StaggeredGridLayoutManager.

我想基于实现移动动画 DefaultItemAnimator

用第4项切换第3项

我尝试在第4项中切换第3项,如下面的屏幕记录所示.它工作得很好.动画只涉及第3和第4项.

在此输入图像描述

用第2项切换第1项

但是,当我尝试用第二项切换第一项时,行为会以某种方式被破坏.

我希望动画只发生在第1项和第2项之间.但是,似乎整个列表都是动画的,即使每个项目具有相同的宽度和高度.(因此,不应执行间隙填充操作)

每次切换后,您需要滚动RecyclerView,以便切换项目可见.

在此输入图像描述


我尝试了什么

  1. 使用

    staggeredGridLayoutManager.setGapStrategy( StaggeredGridLayoutManager.GAP_HANDLING_NONE); 
    
    Run Code Online (Sandbox Code Playgroud)

    没有用.

为了知道场景背后发生了什么,我尝试使用以下内容DefaultItemAnimator进行记录.

public class DebugDefaultItemAnimator extends DefaultItemAnimator {
    @Override
    public boolean animateRemove(RecyclerView.ViewHolder holder) {
        Log.i("CHEOK", "animateRemove");
        return super.animateRemove(holder);
    }

    @Override
    public boolean animateAdd(RecyclerView.ViewHolder holder) {
        Log.i("CHEOK", "animateAdd");
        return super.animateAdd(holder);

    }

    @Override
    public boolean animateMove(RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) {
        Log.i("CHEOK", "animateMove (" + fromX + "," + fromY + ") to (" + toX + …
Run Code Online (Sandbox Code Playgroud)

android

11
推荐指数
2
解决办法
683
查看次数

如何使Activitly正确观察Lifecycle事件

目前,我需要执行一些操作

  • 应用程序启动.
  • 申请退出.
  • 但不是在活动娱乐,配置改变,......

因此,到目前为止,以下代码片段对我很有帮助.我从CommonWare中学到了这样的技巧 - https://commonsware.com/AndroidArch/previews/other-lifecycle-ownershttps://proandroiddev.com/react-to-app-foreground-and-background-events-with-processlifecycleowner -96278e5816fa

WeNoteApplication.java

public class WeNoteApplication extends Application {

    public static class AppLifecycleObserver implements DefaultLifecycleObserver {
        @Override
        public void onResume(LifecycleOwner owner) {
            // Do something when the application launched.
            // But not during activity recreation, configuration change, ...
        }

        @Override
        public void onPause(LifecycleOwner owner) {
            // Do something when the application quit.
            // But not during activity recreation, configuration change, ...
        }
    }

    private static final AppLifecycleObserver appLifecycleObserver = new AppLifecycleObserver();

    @Override …
Run Code Online (Sandbox Code Playgroud)

android

11
推荐指数
1
解决办法
2534
查看次数

退款客户应用内购买,但 BillingClient 仍显示用户已购买?

我正在使用以下内容BillingClient

implementation 'com.android.billingclient:billing:1.2.2'
Run Code Online (Sandbox Code Playgroud)

虽然我已经发出退款如下

在此处输入图片说明

但我仍然收到以下回复 BillingClient.queryPurchases

{
  "orderId": "GPA.3352-2555-5719-25534",
  "packageName": "com.yocto.wenote",
  "productId": "note_list_promo",
  "purchaseTime": 1560501011137,
  "purchaseState": 0,
  "purchaseToken": "djjneabakdaenkjafajbbclo.AO-J1OzbDNn5WkobYbSqLNzoBokm1F552-CqzfLQuNXK69bhxC-TnOTqdPV1RCl9T2okpSWfRD9RrE0eFhSN8glUbsOM5XUBDRnm_yK2Ohq_uyNuU17i1dc3CBhdeEn9uZCIfD3zY4tF"
}
Run Code Online (Sandbox Code Playgroud)

根据文档 BillingClient.queryPurchases

获取在您的应用内购买的所有商品的购买详情。此方法使用 Google Play Store 应用程序的缓存,而无需发起网络请求。

这可能是原因。我尝试使用另一个功能 -queryPurchaseHistoryAsync也无济于事。根据文档

返回用户最近为每个 SKU 进行的购买,即使该购买已过期、取消或消费。

对于queryPurchaseHistoryAsync,没有purchaseState表示以下购买被取消!

{
  "productId": "note_list_promo",
  "purchaseToken": "djjneabakdaenkjafajbbclo.AO-J1OzbDNn5WkobYbSqLNzoBokm1F552-CqzfLQuNXK69bhxC-TnOTqdPV1RCl9T2okpSWfRD9RrE0eFhSN8glUbsOM5XUBDRnm_yK2Ohq_uyNuU17i1dc3CBhdeEn9uZCIfD3zY4tF",
  "purchaseTime": 1560501011137,
  "developerPayload": null
}
Run Code Online (Sandbox Code Playgroud)

谷歌真的应该提供一个非缓存版本的queryPurchases.

知道我做错了什么吗?在我发出退款后,我不希望用户可以继续使用付费功能。

android android-billing

11
推荐指数
1
解决办法
1609
查看次数