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="#eddf00" android:animateLayoutChanges="true" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="Sans-Serif-Condensed" android:textSize="18dp" android:textStyle="italic" android:textColor="#000000" android:padding="15dp" /> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Get Screen Density" android:layout_below="@id/tv" /> </RelativeLayout>
MainActivity.java
package com.cfsuman.me.androidcodesnippets; import android.app.ActionBar; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; 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.util.DisplayMetrics; import android.content.Context; import android.view.WindowManager; 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); ActionBar ab = getActionBar(); ab.setBackgroundDrawable(new ColorDrawable(Color.RED)); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /* 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(); // Get the activity Activity activity = MainActivity.this; tv.setText("Screen density from activity : " + getScreenDensity(activity)); tv.setText(tv.getText() + "\nScreen density from context : " + getScreenDensityFromContext(context)); } }); } // Custom method to get screen density using activity public static float getScreenDensity(Activity activity){ /* DisplayMetrics A structure describing general information about a display, such as its size, density, and font scaling. */ DisplayMetrics dm = new DisplayMetrics(); /* WindowManager The interface that apps use to talk to the window manager. Use Context.getSystemService(Context.WINDOW_SERVICE) to get one of these. */ /* public abstract Display getDefaultDisplay () Returns the Display upon which this WindowManager instance will create new windows. Returns The display that this window manager is managing. */ /* public void getMetrics (DisplayMetrics outMetrics) Gets display metrics that describe the size and density of this display. The size is adjusted based on the current rotation of the display. Parameters outMetrics A DisplayMetrics object to receive the metrics. */ activity.getWindowManager().getDefaultDisplay().getMetrics(dm); /* public float density The logical density of the display. */ float density = dm.density; return density; } // Custom method to get screen density using Context object public static float getScreenDensityFromContext(Context context){ DisplayMetrics dm = new DisplayMetrics(); WindowManager windowManager = (WindowManager) context.getSystemService(WINDOW_SERVICE); windowManager.getDefaultDisplay().getMetrics(dm); /* public float density The logical density of the display. This is a scaling factor for the Density Independent Pixel unit, where one DIP is one pixel on an approximately 160 dpi screen (for example a 240x320, 1.5"x2" screen), providing the baseline of the system's display. Thus on a 160dpi screen this density value will be 1; on a 120 dpi screen it would be .75; etc. */ float density = dm.density; return density; } }

- How to convert dp to pixels
- How to convert pixels to dp
- 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 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