Android में प्रोग्रामेटिकली व्यू की एब्सोल्यूट पोजीशन सेट करना
यह उदाहरण दर्शाता है कि RelativeLayout.LayoutParams का उपयोग करके रनटाइम पर किसी व्यू (जैसे ImageView) को स्क्रीन पर विशिष्ट X, Y निर्देशांक पर कैसे रखा जाए।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project चुनें और प्रोजेक्ट बनाएं।
चरण 2: लेआउट - खाली RelativeLayout
res/layout/activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/relativeLayout"
tools:context=".MainActivity">
</RelativeLayout>
चरण 3: MainActivity.java - रनटाइम पर व्यू जोड़ना और पोजीशन करना
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout rl = findViewById(R.id.relativeLayout);
ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.image); // अपनी इमेज res/drawable में रखें
// LayoutParams: width=500px, height=400px
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(500, 400);
// एब्सोल्यूट पोजीशन: leftMargin=X, topMargin=Y
params.leftMargin = 100; // X निर्देशांक
params.topMargin = 300; // Y निर्देशांक
rl.addView(iv, params);
}
}
चरण 4: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
महत्वपूर्ण बिंदु
- RelativeLayout एब्सोल्यूट पोजीशनिंग के लिए आवश्यक है
leftMargin= X निर्देशांक (बाएं से दूरी)topMargin= Y निर्देशांक (ऊपर से दूरी)- पैरामीटर्स में चौड़ाई/ऊंचाई पिक्सेल में होती है
- DP में बदलने के लिए:
px = dp * (density)
DP में पोजीशन सेट करने का बेहतर तरीका
float density = getResources().getDisplayMetrics().density; int xDp = 50; // 50dp बाएं से int yDp = 100; // 100dp ऊपर से params.leftMargin = (int) (xDp * density); params.topMargin = (int) (yDp * density); params.width = (int) (200 * density); params.height = (int) (150 * density);
अन्य लेआउट्स में पोजीशनिंग
| लेआउट | मेथड |
|---|---|
| RelativeLayout | LayoutParams में leftMargin, topMargin |
| ConstraintLayout | ConstraintSet या Guideline उपयोग करें |
| FrameLayout | LayoutParams में leftMargin, topMargin |
| LinearLayout | एब्सोल्यूट पोजीशनिंग सपोर्ट नहीं करता |
एनिमेशन के साथ मूव करना
// व्यू को नई पोजीशन पर एनिमेट करें
iv.animate()
.x(newX)
.y(newY)
.setDuration(500)
.start();
ऐप चलाएं
डिवाइस कनेक्ट करें, res/drawable/image.png इमेज जोड़ें, Run पर क्लिक करें। इमेज (100, 300) पोजीशन पर 500x400 साइज में दिखाई देगी।