activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/rl" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" tools:context=".MainActivity" android:background="#dce5ff" android:animateLayoutChanges="true" > <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Convert Pixels to DPs" /> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="Sans-Serif-Condensed" android:textSize="14dp" android:layout_below="@id/btn" android:textStyle="italic" android:textColor="#ff0000" /> </RelativeLayout>
MainActivity.java
package com.cfsuman.me.androidcodesnippets; import android.content.res.Resources; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.TextView; import android.content.Context; public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the widgets reference from XML layout simpulan RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl); simpulan Button btn = (Button) findViewById(R.id.btn); simpulan TextView tv = (TextView) findViewById(R.id.tv); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Create some integer values int pixels_first = 37; int pixels_second = 22; int pixels_third = 43; int pixels_fourth = 61; /* Context Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc. */ // Get the Application Context Context context = getApplicationContext(); tv.setText( "Convert Pixels to integer DPs value\n"+ pixels_first+ "pixels = "+ getDPsFromPixels(context, pixels_first) + "dp\n" +pixels_second+ "pixels = "+ getDPsFromPixels(context, pixels_second) + "dp\n" +pixels_third+ "pixels = "+ getDPsFromPixels(context, pixels_third) + "dp\n" +pixels_fourth+ "pixels = "+ getDPsFromPixels(context, pixels_fourth) + "dp\n\n" ); tv.setText( tv.getText()+ "Convert Pixels to perfect DPs value\n"+ pixels_first+ "pixels = "+ getActualDPsFromPixels(context, pixels_first) + "dp\n" +pixels_second+ "pixels = "+ getActualDPsFromPixels(context, pixels_second) + "dp\n" +pixels_third+ "pixels = "+ getActualDPsFromPixels(context, pixels_third) + "dp\n" +pixels_fourth+ "pixels = "+ getActualDPsFromPixels(context,pixels_fourth) + "dp\n" ); } }); } // Method for converting pixels value to dps public static int getDPsFromPixels(Context context, int pixels){ /* public abstract Resources getResources () Return a Resources instance for your application's package. */ Resources r = context.getResources(); int dps = Math.round(pixels/(r.getDisplayMetrics().densityDpi/160f)); return dps; } // Method for converting Pixels value to actual DPs (return float value) public static float getActualDPsFromPixels(Context context, int pixels){ /* Resources Class for accessing an application's resources. This sits on top of the asset manager of the application (accessible through getAssets()) and provides a high-level API for getting typed data from the assets. The Android resource system keeps track of all non-code assets associated with an application. You can use this class to access your application's resources. You can generally acquire the Resources instance associated with your application with getResources(). */ /* public DisplayMetrics getDisplayMetrics () Return the current display metrics that are in effect for this resource object. The returned object should be treated as read-only. Returns The resource's current display metrics. */ Resources r = context.getResources(); /* public int densityDpi The screen density expressed as dots-per-inch. May be either DENSITY_LOW, DENSITY_MEDIUM, or DENSITY_HIGH. */ /* Density-independent pixel (dp) A virtual pixel unit that you should use when defining UI layout, to express layout dimensions or position in a density-independent way. The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a "medium" density screen. At runtime, the system transparently handles any scaling of the dp units, as necessary, based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units when defining your application's UI, to ensure proper display of your UI on screens with different densities. */ // Math.round() return the nearest whole number float dps = pixels/(r.getDisplayMetrics().densityDpi/160f); return dps; } }
- How to convert dp to pixels
- How to get screen size
- How to get screen size from context
- How to get screen width and height (size) in dp
- How to get screen density
- How to get screen orientation
- How to change screen orientation
- How to change screen orientation without restarting activity
- How to detect screen orientation change
- How to prevent screen orientation change
Komentar
Posting Komentar