相关疑难解决方法(0)

将像素转换为dp

我创建了我的应用程序,其高度和宽度以像素为单位,用于分辨率为480x800的Pantech设备.

我需要转换G1设备的高度和宽度.我认为将其转换为dp将解决问题,并为两种设备提供相同的解决方案.

有没有简单的方法将像素转换为dp?有什么建议?

android resolution pixel dpi

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

Android设计库 - 浮动操作按钮填充/保证金问题

我正在使用Google Design Library中新的FloatingActionButton,我遇到了一些奇怪的填充/边距问题.此图像(启用了开发人员布局选项)来自API 22.

在此输入图像描述

从API 17开始.

在此输入图像描述

这是XML

<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_gravity="bottom|right"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="-32dp"
        android:src="@drawable/ic_action_add"
        app:fabSize="normal"
        app:elevation="4dp"
        app:borderWidth="0dp"
        android:layout_below="@+id/header"/>
Run Code Online (Sandbox Code Playgroud)

为什么API 17中的FAB如此大得多?

xml android android-layout floating-action-button android-design-library

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

如何将DP,PX,SP相互转换,尤其是DP和SP?

我知道DP,SPPX之间的区别.在搜索了这个主题后,我发现没有什么能让我完全满意.也许这篇文章是重复的,但我仍然想知道从DPPX,DPSP,从SPPX,从PXSP,从SPDP,从DPSP的转换公式是什么?我知道一些代码可以做到这一点,但它们并不完美.

android pixel density-independent-pixel

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

Android ViewPager上一页和下一页可见?

我目前正在建立一个水平的视频库.

我想制作类似的内容,只有一个视频居中,部分是上一个和下一个视频: 在此输入图像描述

我首先选择了一个画廊,但它的局限性使我寻找其他东西.我想显示一个页面指示器,使用Gallery实现起来非常困难.

第二种选择是从Android兼容性库中获取ViewPager.我找到了一种方法来实现页面指​​示器.但现在,如何部分显示左右页面?

android gallery pager android-viewpager android-support-library

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

LayoutParams使用什么度量单位?

p我正在使用线性布局,并希望设置视图的最大高度.在"正常"情况下,我希望视图使用"wrap_content".然而,偶尔情况可能会将布局推向不合需要的尺寸.发生这种情况时,我想将高度限制在最大300dp.

当布局中的列表超过4个列表项时,我使用以下设置了视图的大小:

LinearLayout listLayout = (LinearLayout) dialog.findViewById(R.id.listLayout);
if(list.size() > 4){
    LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 300);                           
    listLayout.setLayoutParams(params);
}
Run Code Online (Sandbox Code Playgroud)

查看文档使我不了解所应用的度量单位.在这种情况下(dp,sp,px,...),有哪些计量单位?

运行测试,甚至将值设置为100都会使列表超出所需的高度.

请指教

android android-linearlayout layoutparams

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

如何在xamarin.android中将dp转换为px?

我想在xamarin.android的C#代码中将dp转换为px ,但我能找到的只是android studio 中的java代码,在xamarin有一些问题.我尝试使用类似于使用Resources而不是getResources(),我可以解决一些小问题,但是还有一些问题我找不到它们的任何等价物.这里是xamarin中的原始代码,我的代码和我的代码问题:

第一个代码

(从以编程方式将LayoutParams上的高度设置为与密度无关的像素)

java代码

int height = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, < HEIGHT >, getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)

C#代码

int height = (int)TypedValue.ApplyDimension(TypedValue.COMPLEX_UNIT_DIP, < HEIGHT >, Resources.DisplayMetrics);
Run Code Online (Sandbox Code Playgroud)

问题:

  • 'TypedValue'不包含'COMPLEX_UNIT_DIP'的定义

  • 无效的表达式术语<(>的相同错误)

  • 当前上下文中不存在名称"HEIGHT"

第二个代码

(从公式px找到dp,dp到px android)

java代码

DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
Run Code Online (Sandbox Code Playgroud)

C#代码

DisplayMetrics displayMetrics = Application.Context.Resources.DisplayMetrics;
int pixel = Math.Round(dp * (displayMetrics.Xdpi / DisplayMetrics.DensityDefault));
Run Code Online (Sandbox Code Playgroud)

问题

  • 运算符'/'不能应用于'float'和'DisplayMetricsDensity'类型的操作数

现在我实际上有两个问题.哪个代码更合适?在xamarin.android中它们的等效代码是什么?

提前致谢.

pixel pixels xamarin.android density-independent-pixel xamarin

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

Android 4.1中的输出不同

我在Android 2.3和Android 4.1上运行我的程序,但我的应用程序的图片在android 4.1中显示得非常小:

在此输入图像描述

我删除<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="14" />manifest.xml ,我的应用程序完美地工作:

在此输入图像描述

但我不想删除 <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="14" />

我的问题在哪里?

我的代码摘要是:

public class MapCanvas extends ImageView
{    
    ...

    public MapCanvas(Context context) 
    {
        super(context); 
    }

    public MapCanvas(MainActivity context, Bundle state) 
    {
        super(context);                 

        this.context = context; 

        ... 
    }               

    ...

    @Override
    protected void onDraw(Canvas canvas) 
    {                               
        super.onDraw(canvas);               

        ...

        //Paint Offset X, Y, Zoom
        this.paint.setColor(Color.rgb(51, 51, 51)); 
        this.paint.setFakeBoldText(true);
        this.paint.setTextSize(15);
        String text = "X:" + OFFSET_X + ", Y:" + OFFSET_Y + ", Zoom:" + MapZoom.Zoom;                                                     
        canvas.drawText(text, …
Run Code Online (Sandbox Code Playgroud)

eclipse android android-manifest

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

获取设备的屏幕分辨率

我使用以下方法来获取屏幕大小:

public static Point getScreenSize(Context context)
{
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    int w = wm.getDefaultDisplay().getWidth();
    int h = wm.getDefaultDisplay().getHeight();
    return new Point(w, h);
}
Run Code Online (Sandbox Code Playgroud)

在我的三星Galaxy s6上,此方法返回1080x1920 ...虽然我的设备的分辨率为1440x2560.

为什么?有没有更好的方法来获得适用于较新手机的屏幕分辨率?

编辑

我在服务中需要这种方法!我没有帮助的视图/活动,只有应用程序上下文!我需要REAL像素

android resolution screen-resolution

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

从dp转换为像素错误

由于一些奇怪的原因,我无法从下面的函数得到正确的输出,我知道我做了一些愚蠢的错误,但不确定,

public static int convertDpToPixel(int dp, Context context){
       float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dp,context.getResources().getDisplayMetrics());
        return Math.round(px);
    }
Run Code Online (Sandbox Code Playgroud)

而我正在调用函数 - gen_function.convertDpToPixel(R.dimen.button_left_right_margin,this);

输出是一个巨大的数字,这是不期望的,任何帮助非常赞赏.

android android-layout

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