English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يصف هذا المقال كيفية تنفيذ عرض جزء من الصورة في تطوير أندرويد. يتم مشاركته لأجل الاستفادة منه، ويبدو كما يلي:
يعد تحميل صورة واحدة وعرضها في تطبيق أندرويد أمرًا سهلاً، لكن كيف يمكن عرض جزء صغير من الصورة؟ إحدى الطرق هي تعديل الصورة باستخدام Photoshop، ثم حفظ الجزء الذي تريد عرضه كصورة منفصلة، ثم تحميلها في البرنامج وعرضها. ولكن هذا سيزيد من كمية الصور في البرنامج. يمكن قطع الصورة بأكملها باستخدام البرنامج بسهولة أيضًا.
يعد البرنامج الذي تم تنفيذه هنا هو تحميل صورة واحدة، ثم تحويلها لملء شاشة الهاتف بأكملها، ثم عرض جزء 100*100 من الصورة في منتصف الشاشة.
كود ShowPoritionPictureActivity:
package com.iwin.zzs; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.WindowManager; public class ShowPoritionPictureActivity extends Activity { /** تم استدعاء هذا الحدث عند إنشاء النشاط لأول مرة. */ Bitmap picRes; Bitmap showPic; //获取原图片的宽和高 int picWidth; int picHeight; private PoritionView poritonView = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 不显示状态栏 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); DisplayMetrics dm = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(dm); // 得到屏幕的长和宽 int screenWidth = dm.widthPixels; //水平分辨率 int screenHeight = dm.heightPixels; //垂直分辨率 picRes = BitmapFactory.decodeResource(this.getResources(), R.drawable.girl); // 得到图片的长和宽 picWidth = picRes.getWidth(); picHeight = picRes.getHeight(); // 计算缩放率,新尺寸除原始尺寸 float scaleWidth = ((float) screenWidth ) / picWidth; float scaleHeight = ((float) screenHeight ) / picHeight; // 创建操作图片用的matrix对象 Matrix matrix = new Matrix(); // 缩放图片动作 matrix.postScale(scaleWidth, scaleHeight); // 新得到的图片是原图片经过变换填充到整个屏幕的图片 Bitmap picNewRes = Bitmap.createBitmap(picRes, 0, 0,picWidth, picHeight, matrix, true); // bitmap = Bitmap.createBitmap(400, 480, Bitmap.Config.ARGB_8888); // canvas=new Canvas(); // canvas.setBitmap(bitmap); showPic = Bitmap.createBitmap(picNewRes, screenWidth/2-50, screenHeight/2-50, 100, 100); poritonView = new PoritionView(this); poritonView.setBitmapShow(showPic, screenWidth/2-50, screenHeight/2-50); setContentView(poritonView); }
新建PoritionView类代码:
package com.iwin.zzs; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.view.View; public class PoritionView extends View { private Bitmap showPic = null; private int startX = 0; private int startY = 0; public PoritionView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); canvas.drawBitmap(showPic, startX, startY, null); } public void setBitmapShow(Bitmap b, int x, int y) { showPic = b; startX = x; startY = y; } }
إضافة صورة gir.png في مجلد res/drawable، والنتيجة عند تشغيل البرنامج هي عرض جزء من الصورة الوسطى 100*100.
بالنسبة للقراء المهتمين بمزيد من المعلومات المتعلقة بAndroid، يمكنهم مراجعة مواضيع الموقع الخاصة بنا: 'مجموع تقنيات معالجة الصور والرسومات في Android'، 'دليل الدخول والترقية في تطوير Android'، 'مجموع تقنيات الت调试 والإجابة على المشاكل الشائعة في Android'، 'مجموع تقنيات التشغيل的多媒体 (الصوت، الفيديو، التسجيل، إلخ)'، 'مجموع استخدامات العناصر الأساسية في Android'، 'مجموع تقنيات العرض View في Android'، 'مجموع تقنيات التخطيط layout في Android'، و 'مجموع استخدامات العناصر التحكم في Android'.
نأمل أن يساعدك محتوى هذا المقال في تصميم برامج Android.
بيان: محتوى هذا المقال تم جمعه من الإنترنت، ويحق لصاحب الحقوق الأصلية أن يكون له حقوق الملكية، ويتم جمع المحتوى من قبل المستخدمين عبر الإنترنت بطرقهم الخاصة، ويشمل هذا الموقع ليس لديه حقوق الملكية، ويتم التعامل مع المحتوى بشكل غير منظم، ولا يتحمل الموقع أي مسؤولية قانونية ذات صلة. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق النسخ، فنرجو منك إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال #بـ @) لتقديم الشكوى، وتقديم الدليل ذات الصلة، وإذا تم التحقق من صحة الشكوى، فإن هذا الموقع سيقوم بإزالة المحتوى المشبوه فوراً.