小编Jam*_*mmo的帖子

在不同组中选择的导航抽屉菜单项

我有一个工作的导航抽屉,menuItem.setChecked(true);并在菜单中使用组和标题时遇到一些问题.它没有按预期突出显示菜单项.

这是我的XML:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".ActivityMap">

    <group android:checkableBehavior="single">


        <item
            android:id="@+id/nav_welcome"
            android:icon="@drawable/abc_btn_check_to_on_mtrl_000"
            android:title="Welcome" />
        <item
            android:id="@+id/nav_map_showmap"
            android:icon="@mipmap/ic_map_black_24dp"
            android:title="Show Map" />
        <item
            android:icon="@mipmap/ic_list_black_24dp"
            android:title="Show List" />

        <item android:title="Settings">
            <menu>

                <item
                    android:id="@+id/nav_database_check"
                    android:icon="@mipmap/ic_cloud_done_black_24dp"
                    android:title="Update Database" />
                <item
                    android:id="@+id/nav_map_settings"
                    android:icon="@mipmap/ic_settings_black_24dp"
                    android:title="App Preferences" />

            </menu>
        </item>


        <item android:title="General">
            <menu>

                <item
                    android:id="@+id/nav_general_about"
                    android:icon="@mipmap/ic_info_black_24dp"
                    android:title="About" />
                <item
                    android:id="@+id/nav_general_help"
                    android:icon="@mipmap/ic_help_black_24dp"
                    android:title="Help" />
                <item
                    android:id="@+id/nav_general_report"
                    android:icon="@mipmap/ic_email_black_24dp"
                    android:title="Feedback / Report error" />
            </menu>
        </item>
    </group>
</menu>
Run Code Online (Sandbox Code Playgroud)

如您所见,我有3个菜单项,然后是包含2个菜单项的设置组,然后是包含3个菜单项的通用组.

现在使用前3个菜单项,menuItem.setChecked(true);按预期工作,并突出显示该菜单项.但是,子集("设置"或"常规"子集)中的以下菜单项均未正确突出显示.

我读到<group android:checkableBehaviour="single">可以封装整个块,但这似乎不起作用.

有什么想法吗?干杯.

编辑 - 添加了菜单结构的屏幕截图

在此输入图像描述

java android android-menu android-fragments navigation-drawer

14
推荐指数
3
解决办法
9757
查看次数

Flutter GoogleMaps - 自定义标记的动态着色

Flutter Google Maps 允许在地图上使用标准/默认标记。您还可以以编程方式将颜色应用到此标记,以向您的应用程序添加各种颜色。

但是,我似乎无法使用相同的技术将颜色动态应用于自定义(白色)标记。与其制作 10 个不同颜色的自定义标记,我更喜欢使用纯白色的标记,并使用Hue或 颜色混合动态着色。

默认标记

    bool bToggle = true; 

    _markers.add(Marker(
        markerId: MarkerId(markerid),
        position: newPos,
        onTap: () {
          ...
        },
        infoWindow: InfoWindow(
          ...
        ),
        icon: BitmapDescriptor.defaultMarkerWithHue(
           (bToggle) ? BitmapDescriptor.hueYellow : BitmapDescriptor.hueRed
        ),        
      ));
Run Code Online (Sandbox Code Playgroud)

自定义标记

    _markers.add(Marker(
        markerId: MarkerId(markerid),
        position: newPos,
        onTap: () {
          ...
        },
        infoWindow: InfoWindow(
          ...
        ),
        icon: BitmapDescriptor.fromAssetImage(ImageConfiguration(devicePixelRatio: 2.5), 'assets/markers/pin-blue.png')
        ),        
      ));
Run Code Online (Sandbox Code Playgroud)

非常感谢

google-maps google-maps-markers dart flutter

6
推荐指数
1
解决办法
2422
查看次数

将分钟转换为人类可读的格式

快速提问。

是否有更智能/更时尚的方法将分钟转换为更易读的格式,只显示最重要的数字?

我正在使用 Android Studio 的 Java。

public String MinutesToHumanReadable(Long minutes) {

...

}
Run Code Online (Sandbox Code Playgroud)

IE

2 mins = "2 mins"
45 mins = "45 mins"
60 mins = ">1 hr"
85 mins = ">1 hr"
120 mins = ">2 hrs"
200 mins = ">3 hrs"
1500 mins = ">1 day"
Run Code Online (Sandbox Code Playgroud)

我的代码非常繁琐、草率,而且有些不可读。

public String MinutesToHumanReadable(long minutes) {
    String sReturn = "";

    if (minutes > 515600) {
        sReturn = "> 1 yr";

    } else if (minutes > 43200) {
        sReturn = (minutes …
Run Code Online (Sandbox Code Playgroud)

java formatting android date android-studio

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

Libgdx meshbuilder手动创建3d对象

我正在使用 Libgdx (Java) 并尝试构建 3D 模型。目前,我可以使用已定义的方法(例如modelBuilder.createBox()或 )创建模型modelBuilder.createSphere()。但是,我想使用自定义网格(根据一些基本数学计算顶点)构建自己的球体,然后细分以增加面数。例如,从二十面体开始,然后进一步细分以增加面数。我必须手动执行此操作,因为似乎没有任何更简单的方法可以执行此操作。我想这样做是因为以后想分别针对这些人脸来为所说的人脸应用独特的颜色/纹理。

在此处输入图片说明

我想如果有人帮我制作一个自定义/手动立方体,我可能会解决其余的问题。

我的环境已经设置好了,我目前可以使用预定义的方法构建一个球体:

public class ManagerSphere {

    //Settings
    public String ASSET_TEXTURE_BOX = "data/libgdx.png";
    public float SPHERE_RADIUS = 2f;

    //init
    private GameScreen _gameRef;
    private ModelBuilder modelBuilder = new ModelBuilder();
    private Texture tex;
    private Material mat;
    private ModelInstance boxInstance;
    public AssetManager assets;

    public ManagerSphere(GameScreen gameRef) {
        this._gameRef = gameRef;
        createSphere();
    }


    public void createSphere() {
        this.tex = new Texture("spheretexture02.jpg"); 
        this.mat = new Material(TextureAttribute.createDiffuse(this.tex));

        Model tempSphere;
        tempSphere = modelBuilder.createSphere(SPHERE_RADIUS*2, …
Run Code Online (Sandbox Code Playgroud)

java 3d mesh libgdx

5
推荐指数
0
解决办法
3258
查看次数

数据更新后颤振列表视图未更新

我在bottomSheet中有一个ListView,它是使用元素数组构建的。目前我在那里有一个项目“空”,然后.clear()在异步数据库调用后进行编辑和填充。

变量更新是正确的,我尝试使用setState((){})但 ListView 根本没有更新。我需要关闭bottomSheet,重新打开它,然后ListView 就会有正确的项目。

我是否只需要调用setState或是否需要标记 bottomSheet 构建器以进行更新?

主 ListView 部分:

 @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('My Map'),
          backgroundColor: Colors.green[700],
        ),

        //Put in a stack widget so can layer other widgets on top of map widget
        body: Stack(
          children: <Widget>[
            GoogleMap(
              mapType: _currentMapType,
              markers: _markers,
              onMapCreated: _onMapCreated,
              onCameraMove: _onCameraMove,
              initialCameraPosition: CameraPosition(
                target: _center,
                zoom: 11.0,
              ),
            ),
            Padding(
              padding: const EdgeInsets.all(16.0),
              child: Align(
                  alignment: Alignment.bottomCenter,
                  child: Row(mainAxisSize: …
Run Code Online (Sandbox Code Playgroud)

listview dart android-studio flutter

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

libgdx spritebatch不是基于纹理的Origin绘制的

我在这里画精灵的集合,当缩小,并进行放大时,一个更大的(16×16)的质地.当变焦水平达到阈值时,发生了互换使用较小的(4×4)的质感.

然而,为了使其成为平滑过渡,需要绘制精灵(位于[x,y]),其原点是精灵的中心.目前他们正在根据他们的左下角绘制.因此,当纹理交换发生时,精灵会略微跳跃,因为原点不匹配.

我已经创建了一些变量来调试并确保它们是正确的.

    TextureRegion sprite = null;

    boolean useHighResTexture = (_gameRef.cameraZoom < CAMERA_ZOOM_SWITCH_LO_RES);
    if (useHighResTexture) {
        //Zoomed in, Hi res, Use animation
        sprite = animation.getKeyFrame(animationStateTime, true);

    } else {
        //Zoomed out, lo-res, Use static image
        sprite = Assets.instance.getSmall();
    }


    float spriteWidth = sprite.getRegionWidth();
    float spriteHeight = sprite.getRegionHeight();
    float spriteOriginX = spriteWidth/2;
    float spriteOriginY = spriteHeight/2;

    //Draw(TEXTURE, x, y, originx, originy, 
    //      width, height, scaleX, scaleY, rotation, 
    //      srcX, srcY, 
    //      srcWidth, srcHeight, boolflipX, boolflipY

    //this.setCenter(spriteOriginX, spriteOriginY);

    batch.draw(sprite.getTexture(), this.x, this.y, spriteOriginX, …
Run Code Online (Sandbox Code Playgroud)

java android textures sprite libgdx

4
推荐指数
1
解决办法
3131
查看次数

Libgdx如何通过电话方向在多个轴上旋转3D模型

我正在尝试使用手机的加速度计一次在多个轴上旋转3D模型.当我这样做时,我会使用setToRotation(),但这一次只能做一个轴.

例如:

  ModelInstance modelInstance = instances.first(); 

  //ROLL
  modelInstance.transform.setToRotation(Vector3.Z, phoneAccel.y*9);
  //PITCH
  modelInstance.transform.setToRotation(Vector3.X, phoneAccel.z*9);
Run Code Online (Sandbox Code Playgroud)

手机处于强制横向模式.我得到了我想要旋转的模型的实例.

Vector3 phoneAccel基于Gdx.input.getAccelerometerX/Y/Z().

在上面的示例中,两行代码都能正常工作,但只能独立工作.当我尝试使用两者(一个接一个)时,第一次旋转(ROLL)被移除.我原本认为两个旋转矩阵将累积,即Z轴应用旋转,然后X轴应用旋转.

我是否需要创建自己的累积旋转矩阵,然后在最后应用它?

有什么想法吗?干杯

java 3d android matrix libgdx

4
推荐指数
1
解决办法
7145
查看次数

反应本机地图标记自定义图像不能更改为默认值

我花了大约5个小时来尝试使它与许多不同的代码排列一起使用,然后进行重建。我一生都无法将默认的“红色指针”标记更改为React Native Maps中的默认标记图像。

import MapView, { PROVIDER_GOOGLE } from 'react-native-maps';

...

<MapView
    provider={PROVIDER_GOOGLE}
    style={styles.map}
    ref={ref => {this.map = ref;}}
    minZoomLevel={4}  // default => 0
    maxZoomLevel={10} // default => 20
    enableZoomControl={true}
    showsUserLocation = {true}
    showsMyLocationButton = {true}
    zoomEnabled = {true}
    initialRegion={{
        latitude: 37.600425,
        longitude: -122.385861,
        latitudeDelta: LATITUDE_DELTA,
        longitudeDelta: LONGITUDE_DELTA,
    }}
>
    <MapView.Marker
        coordinate={marker.location}
        image={require('./images/test.png')}        <------ HERE
        width={48}
        height={48}
    />
</MapView>
Run Code Online (Sandbox Code Playgroud)

图像肯定存在于正确的文件夹中,我尝试了不同的图像格式png / gif / jpg / svg,尝试使用了{{uri:...}}icon/image,添加和删除了width / height属性。似乎没有任何作用。我总是得到默认的红色指针。

我错过了明显的事情吗?

如果require映像不存在或类型不受支持,则项目打包程序/编译器将失败。它绝对可以看到图像,但是对此不做任何事情。在仿真器和实际设备上,结果相同。

image={require('./images/test.png')}

这条线什么也不做,好像它被某种方式忽略了一样。

google-maps-markers react-native react-native-android react-native-maps

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

将字符串链接到函数

Java(Android)中是否有一种方法可以链接字符串和函数?我的目标是根据从单独方法接收的字符串运行某个函数.

即如果myString =="building"则执行buildingmethod();

我正在考虑使用像这样的HashMap:

HashMap<String,Runnable> hashDBTableUpdateRef = new HashMap<>();
hashDBTableUpdateRef.put("house",this.housemethod());
hashDBTableUpdateRef.put("shed",this.shedmethod());
hashDBTableUpdateRef.put("barn",this.barnmethod());
Run Code Online (Sandbox Code Playgroud)

然后

String myString = getCalculatedString();
for (String s : hashDBTableUpdateRef) {
    hashDBTableUpdateRed.get(s).run();
}
Run Code Online (Sandbox Code Playgroud)

我无法真正使用参数创建泛型方法,例如function anyBuilding(String buildingType)由于以下操作和自定义枚举.有什么想法吗?是runnable前进的道路?

例如:

function housemethod() {
    myHouseObject.runSomething();
}
function shedmethod() {
    myShedObject.runSomething();
}
function barnmethod() {
    myBarnObject.runSomething();
}
Run Code Online (Sandbox Code Playgroud)

谢谢,

java android enumeration hashmap runnable

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