小编Dan*_*ith的帖子

如何将快速滚动条添加到RecyclerView

背景

在ListView上,您可以使用快速滚动条,允许您拖动滚动条以轻松滚动到您希望的任何位置(使用fastScrollEnabled属性)

与" SectionIndexer "类和可选的一些属性一起,您可以在使用此滚动条时显示一个很好的弹出窗口(此处链接).

联系人应用程序上会显示这样的内容,以便您可以轻松滚动到特定字母.

问题

RecyclerView似乎没有任何这些.甚至不是快速滚动.

这个问题

如何为RecyclerView添加快速滚动功能?

android scrollbar fastscroll sectionindexer android-recyclerview

70
推荐指数
5
解决办法
4万
查看次数

带概率的随机数

我想知道在每个数字有一定概率发生的特定范围内生成随机数的最佳方法(例如在Java中)是什么?

例如

使用以下概率从[1; 3]内生成随机整数:

P(1)= 0.2
P(2)= 0.3
P(3)= 0.5


现在我正在考虑在[0; 100]内生成随机整数的方法并执行以下操作:

如果它在[0; 20] - >我得到我的随机数1.
如果它在[21; 50] - >我得到我的随机数2.
如果它在[51; 100] - >我得到了随机数3.

你会说什么?

java random probability

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

更改通知的LED颜色

我基本上只是尝试Android开发,几天前我遇到了这个名为" Go SMS Pro "的应用程序,除其他外,它可以设置不同颜色的通知(蓝色,绿色,橙色,粉红色和浅色)蓝色).所以,我已经尝试在我自己的应用程序中自己做这件事,但是我不能改变颜色和LED的内部闪烁.我目前使用此代码:

public class MainActivity extends Activity {
  static final int NOTIFICATION_ID = 1;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(buttonOnClick);
  }

  public OnClickListener buttonOnClick = new OnClickListener() {

    @Override
    public void onClick(View v) {
      String ns = Context.NOTIFICATION_SERVICE;
      NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

      Notification notification = new Notification(R.drawable.icon, "Hello", System.currentTimeMillis());
      notification.flags = Notification.FLAG_SHOW_LIGHTS | Notification.FLAG_AUTO_CANCEL;
      notification.ledARGB = Color.BLUE;
      notification.ledOnMS = 1000;
      notification.ledOffMS = 300;

      Context context = getApplicationContext();
      CharSequence …
Run Code Online (Sandbox Code Playgroud)

android android-notifications

28
推荐指数
5
解决办法
5万
查看次数

使用与生成的视频文件不同的预览大小录制视频

我试图允许用户录制与录制时可以看到的实际屏幕预览不同的视频.这似乎可以从这个有关getSupportedVideoSizes功能的文档中说明:

如果返回的列表不为null,则返回的列表将包含至少一个Size,如果将摄像机用作视频源,则返回列表中的一个大小必须传递给MediaRecorder.setVideoSize()以用于摄像机应用程序.在这种情况下,预览的大小可以与视频记录期间记录的视频的分辨率不同.

这表明某些手机将从此fn返回null(根据我的经验,Galaxy SIII会这样做),但对于那些不这样做的手机,可以提供与实际视频不同的分辨率的预览.这种理解是否正确?有些手机允许这种行为吗?

尝试解决方案:

在功能的官方描述中setPreviewDisplay,用于设置视频录制漫长过程中,提到:

如果使用null surface调用此方法或根本不调用此方法,则介质记录器将不会更改摄像机的预览表面.

这似乎是我想要的,但不幸的是,如果我这样做,整个视频录制过程完全搞砸了.我假设在录制视频的过程中,此函数不能传递null或根本不调用.也许在其他情况下这是可以的.不幸的是,这似乎对我没有帮助.

我唯一接下来的步骤是查看TextureViews并使用预览纹理而不是典型的SurfaceView实现,以便使用openGL将纹理拉伸到我想要的大小(与实际分辨率不同)(并裁剪屏幕上的任何多余部分) ,然后使用Surface setPreviewDisplaySurface(SurfaceTexture surfaceTexture)构造函数为该函数构造一个Surface.我想避免使用TextureViewICS下面的不兼容性,也因为这会增加显着的复杂性.

这似乎是一个微妙的过程,但我希望有人可以在这方面提供一些建议.

谢谢.

android android-camera mediarecorder

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

将相机预览适合大于显示器的SurfaceView

我有一个Android应用程序需要全屏一个摄像头预览,无论预设大小getSupportedPreviewSizes()没有失真.我希望这可以在高度或宽度上裁剪一些预算,但这并不关心我.我寻求这样做的原因是因为某些安卓摄像头(例如三星Galaxy SII前置摄像头)不会返回任何与显示器具有相同宽高比的预览,因此需要拉伸和剪裁.

是否可以将相机预览完全增加到大于显示尺寸的视图?通过简单地将曲面视图的布局参数设置为match_parent,可以使SurfaceView大于返回的预览像素尺寸,但这会导致某些方向的失真,并且只有在预览填充显示之前才可能.这似乎表明在显示器外部进行预览是不可能的,并且硬件(或OS)限制了这种行为.

关于这个主题还有另一个问题,但是这个问题声称不可能创建一个大于屏幕尺寸的SurfaceView,这是错误的,正如我在日志记录中发现的那样.然而,似乎情况是相机预览无法增长到庞大的SurfaceView的全尺寸.

我的尝试:

我有一个相对布局,在它内部是一个FrameLayout,在其中我创建了一个SurfaceView.整个相对布局的宽度设置在635dp以下,这是设备屏幕尺寸的两倍.FrameLayout匹配此大小,SurfaceView也是如此(稍后以编程方式添加)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/camera_activity_layout"
    android:layout_width="635dp"
    android:layout_height="match_parent" >

    <FrameLayout
        android:id="@+id/camera_preview"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

以下是获取和设置预览大小的代码.在这里,我想让相机预览展开以填充整个FrameLayout(屏幕宽度的两倍).视图完全正常显示和破坏,因此我删除与此特定问题无关的代码,因为它分散了基本问题,并且我尝试轻松简单地将视图扩展为大于显示大小的视图.

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {

    ...

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        Camera.Parameters parameters = mCamera.getParameters();
        final DisplayMetrics dm = this.getResources().getDisplayMetrics();
            //getBestPreviewSize returns the best preview size, don't worry
            //but some devices do not return one for all camera matching the aspect ratio
        cameraSize = getBestPreviewSize(parameters, dm.heightPixels, dm.widthPixels); …
Run Code Online (Sandbox Code Playgroud)

android surfaceview android-layout android-camera

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

JakeWhartons DiskLruCache的示例

我想DiskLruCache在我的基于API Level 7+的Android应用程序中使用来自Jake Wharton的.我会在我的ListView中使用它来缓存SdCard上下载的图像,但我不明白这个库的用法.有人能告诉我一个如何从这个缓存中获取Bitmaps或将Bitmaps放入缓存的示例吗?(key = filePath,value = Bitmap)

我找不到获取此快照对象的值的方法.

谢谢你的帮助.

android caching

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

Atom/Nuclide是否为react-native组件提供自动导入

有没有办法让Atom为我添加到react-native文件的组件生成import语句?

NavigatorAtom/Nuclide编辑器中编辑react-native代码时添加标准的react-native组件(如a )时,我发现需要手动编写import语句.这是预期的吗?

在传统的本机IDE世界(Android Studio,XCode)中,IDE会自动生成import语句.这有原子包装吗?

例:

import React, { Component } from 'react'
import { AppRegistry } from 'react-native'

class TestProject extends Component {
  render() {
    return (
      <Navigator
      ...
Run Code Online (Sandbox Code Playgroud)

在上面,第2行应该成为:

import { AppRegistry, Navigator } from 'react-native'
Run Code Online (Sandbox Code Playgroud)

atom-editor react-native nuclide-editor

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

可以在android径向渐变可绘制中重新定位中心颜色吗?

使用标准的开始,中心和结束颜色在android的径向渐变中很容易实现左下方的渐变,其中start = yellow,center = purple,end = blue.然而,右边的圆圈需要重新定位中心颜色.这可能吗?

在此输入图像描述

左边的结果可以通过以下方式重现:

    <shape android:shape="oval">
        <gradient
            android:endColor="#0000ff"
            android:gradientRadius="my_radius"
            android:centerColor="#770077"
            android:startColor="#00ffff"
            android:type="radial"/>
    </shape>
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以移动中心颜色来实现右边的渐变.我相信答案是否定的,但我想看看是否有人发现了这样做的方法.谢谢!

android gradient drawable android-xml

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

Android Studio无法通过OSX上的ADB连接

我已经在OSX 10.7.5上使用Android Studio了,它看起来非常有前景.我尝试在我的设备上启动应用程序时遇到了问题.

单击运行按钮时,AS声称"正在等待ADB".过了一会儿,它超时并说"亚行没有回应......".

我试图重新启动和重新启动与亚行adb-killserveradb-startserver很多次,但它不能连接.adb devices通过eclipse 运行或启动时,一切正常.

任何人都有想法,我将非常感激!

ide macos android android-studio

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

setOrientationHint在某些手机的前置摄像头(HTC)上逆时针旋转视频

问题:某些Android设备(在问题的底部列出)在使用setOrientationHint(int degrees)前置摄像头拍摄的视频功能时会出现意外行为.预期的行为是视频顺时针旋转,但这些设备逆时针旋转视频.

我的目标:在摄像机设置或硬件方向内识别变量,使我能够预测何时会发生这种情况.具体来说,我想避免在我的代码中特别包装这些​​手机!

进一步说明:我正在使用标准MediaRecorder对象录制视频,在准备录制时,我使用了设置视频的方向setOrientationHint().在文档中setOrientationHint(),为degrees参数指定了以下内容:

degrees - 以度为单位顺时针旋转的角度.支持的角度为0°,90°,180°和270°.

该功能旨在添加包含旋转角度的合成矩阵,以便视频播放器可以按预期显示视频.所以,我所做的是使用CameraInfo类获取相机硬件的方向,并将其用作fn中的degrees参数setOrientationHint.(我已尝试使用AOSP作为指南对此代码进行修改,但我的结果完全相同.)

一个真实示例:三星Galaxy S3前置摄像头(事实上大多数其他摄像头)的硬件方向为270,所以我在录制时会使用它,并且生成的视频会正确显示.HTC Vivid同样会为同一台相机返回270的硬件方向,但只有degreessetOrientationHintfn中使用90作为参数时才能正确显示.如果我像任何其他手机一样使用270硬件方向,则视频将颠倒过来.

注意:setOrientationHint()功能包括警告:

请注意,某些视频播放器可能会选择在播放期间忽略视频中的合成矩阵.

然而,这不是正在发生的事情,因为如果我伪造它并放入90而不是270,我可以轻松地在这些手机上解决这个问题.

我见过的手机专门展示了这个问题:运行Android 4.0.3的HTC Vivid(PH39100),运行Android 4.0.3的HTC EVO 4G(PG86100),运行Android 2.3.4的HTC Thunderbolt(ADR6400L).请注意,它们都是HTC手机.也许HTC的某个人顺时针错误地逆时针方向错误.

android android-camera android-mediarecorder htc-android

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