Aspose.Slides untuk Xamarin
Pengantar
Xamarin adalah kerangka kerja yang digunakan untuk pengembangan seluler di .NET C#. Xamarin memiliki alat dan pustaka yang memperluas kemampuan platform .NET. Ini memungkinkan pengembang membangun aplikasi untuk sistem operasi Android.
Aspose.Slides API berfungsi pada platform Xamarin. Untuk mencapainya, paket Aspose.Slides .NET menambahkan DLL terpisah untuk Xamarin. Aspose.Slides untuk Xamarin mendukung sebagian besar fitur yang tersedia di versi .NET:
- mengkonversi dan menampilkan presentasi.
- mengedit konten dalam presentasi: teks, bentuk, diagram, SmartArt, audio/video, font, dll.
- menangani animasi, efek 2D, WordArt, dll.
- menangani metadata dan properti dokumen.
- mencetak, mengkloning, menggabungkan, membandingkan, memecah, dll.
Kami menyediakan perbandingan seluruh fitur di bagian lain yang berada di dekat bagian bawah halaman ini.
Pada API Aspose.Slides untuk Xamarin, kelas, namespace, logika, dan perilaku sedekat mungkin dengan versi .NET. Anda dapat memigrasikan aplikasi Aspose.Slides .NET Anda ke Xamarin dengan biaya minimal.
Contoh Cepat
Anda dapat menggunakan Aspose.Slides untuk Xamarin untuk membangun dan memanfaatkan aplikasi C# Anda melalui Slides for Android.
Kami menyediakan contoh aplikasi Android via Xamarin yang menggunakan Aspose.Slides untuk menampilkan slide presentasi dan menambahkan bentuk baru pada slide saat disentuh. Anda dapat menemukan sumber lengkap contoh pada GitHub.
Mari kita mulai dengan membuat Aplikasi Xamarin Android:
Pertama, kita membuat tata letak konten yang akan berisi tampilan gambar, tombol Prev, dan Next:
XML - content_main.xml - Membuat tata letak konten
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation= "vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:showIn="@layout/activity_main">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/linearLayout1">
<ImageView
android:src="@android:drawable/ic_menu_gallery"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"
android:scaleType="fitCenter" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="10"
android:id="@+id/linearLayout2">
<Button
android:text="Prev"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonPrev" />
<Button
android:text="Next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonNext"/>
</LinearLayout>
</LinearLayout>
Di sini, kami merujuk ke perpustakaan “Aspose.Slides.Droid.dll” yang termasuk contoh presentasi (“HelloWorld.pptx”) ke Assets aplikasi Xamarin dan menambahkan inisialisasinya ke MainActivity:
C# - MainActivity.cs - Inisialisasi
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
private Aspose.Slides.Presentation presentation;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
}
protected override void OnResume()
{
if (presentation == null)
{
using (Stream input = Assets.Open("HelloWorld.pptx"))
{
presentation = new Aspose.Slides.Presentation(input);
}
}
}
protected override void OnPause()
{
if (presentation != null)
{
presentation Dispose();
presentation = null;
}
}
}
Mari tambahkan fungsi untuk menampilkan slide Prev dan Next saat tombol diketuk:
C# - MainActivity.cs - Menampilkan slide pada klik tombol Prev dan Next
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
private Button buttonNext;
private Button buttonPrev;
ImageView imageView;
private Aspose.Slides.Presentation presentation;
private int currentSlideNumber;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
}
protected override void OnResume()
{
base.OnResume();
LoadPresentation();
currentSlideNumber = 0;
if (buttonNext == null)
{
buttonNext = FindViewById<Button>(Resource.Id.buttonNext);
}
if (buttonPrev == null)
{
buttonPrev = FindViewById<Button>(Resource.Id.buttonPrev);
}
if(imageView == null)
{
imageView= FindViewById<ImageView>(Resource.Id.imageView);
}
buttonNext.Click += ButtonNext_Click;
buttonPrev.Click += ButtonPrev_Click;
RefreshButtonsStatus();
ShowSlide(currentSlideNumber);
}
private void ButtonNext_Click(object sender, System.EventArgs e)
{
if (currentSlideNumber > (presentation.Slides.Count - 1))
{
return;
}
ShowSlide(++currentSlideNumber);
RefreshButtonsStatus();
}
private void ButtonPrev_Click(object sender, System.EventArgs e)
{
if (currentSlideNumber == 0)
{
return;
}
ShowSlide(--currentSlideNumber);
RefreshButtonsStatus();
}
protected override void OnPause()
{
base.OnPause();
if (buttonNext != null)
{
buttonNext.Dispose();
buttonNext = null;
}
if (buttonPrev != null)
{
buttonPrev.Dispose();
buttonPrev = null;
}
if(imageView != null)
{
imageView.Dispose();
imageView = null;
}
DisposePresentation();
}
private void RefreshButtonsStatus()
{
buttonNext.Enabled = currentSlideNumber < (presentation.Slides.Count - 1);
buttonPrev.Enabled = currentSlideNumber > 0;
}
private void ShowSlide(int slideNumber)
{
Aspose.Slides.Drawing.Xamarin.Size size = presentation.SlideSize.Size.ToSize();
Aspose.Slides.Drawing.Xamarin.Bitmap bitmap = presentation.Slides[slideNumber].GetThumbnail(size);
imageView.SetImageBitmap(bitmap.ToNativeBitmap());
}
private void LoadPresentation()
{
if(presentation != null)
{
return;
}
using (Stream input = Assets.Open("HelloWorld.pptx"))
{
presentation = new Aspose.Slides.Presentation(input);
}
}
private void DisposePresentation()
{
if(presentation == null)
{
return;
}
presentation.Dispose();
presentation = null;
}
}
Akhirnya, mari implementasikan fungsi untuk menambahkan bentuk elips pada sentuhan di slide:
C# - MainActivity.cs - Menambahkan elips dengan klik slide
private void ImageView_Touch(object sender, Android.Views.View.TouchEventArgs e)
{
int[] location = new int[2];
imageView.GetLocationOnScreen(location);
int x = (int)e.Event.GetX();
int y = (int)e.Event.GetY();
int posX = x - location[0];
int posY = y - location[0];
Aspose.Slides.Drawing.Xamarin.Size presSize = presentation.SlideSize.Size.ToSize();
float coeffX = (float)presSize.Width / imageView.Width;
float coeffY = (float)presSize.Height / imageView.Height;
int presPosX = (int)(posX * coeffX);
int presPosY = (int)(posY * coeffY);
int width = presSize.Width / 50;
int height = width;
Aspose.Slides.IAutoShape ellipse = presentation.Slides[currentSlideNumber].Shapes.AddAutoShape(Aspose.Slides.ShapeType.Ellipse, presPosX, presPosY, width, height);
ellipse.FillFormat.FillType = Aspose.Slides.FillType.Solid;
Random random = new Random();
Aspose.Slides.Drawing.Xamarin.Color slidesColor = Aspose.Slides.Drawing.Xamarin.Color.FromArgb(random.Next(256), random.Next(256), random.Next(256));
ellipse.FillFormat.SolidFillColor.Color = slidesColor;
ShowSlide(currentSlideNumber);
}
Setiap klik pada slide presentasi akan menambahkan elips berwarna acak:
Fitur yang Didukung
| FITUR | Aspose.Slides for .NET | Aspose.Slides for Xamarin |
|---|---|---|
| Fitur presentasi: | ||
| Buat presentasi baru |
|
|
| PowerPoint 97 - 2003 format buka/simpan |
|
|
| PowerPoint 2007 format buka/simpan |
|
|
| Dukungan ekstensi PowerPoint 2010 |
|
|
| Dukungan ekstensi PowerPoint 2013 |
|
|
| Dukungan fitur PowerPoint 2016 | terbatas | terbatas |
| Dukungan fitur PowerPoint 2019 | terbatas | terbatas |
| Konversi PPT ke PPTX |
|
|
| Konversi PPTX ke PPT |
|
|
| PPTX dalam PPT | terbatas | terbatas |
| Pemrosesan tema |
|
|
| Pemrosesan makro |
|
|
| Pemrosesan properti dokumen |
|
|
| Perlindungan kata sandi |
|
|
| Ekstraksi teks cepat |
|
|
| Menyematkan font |
|
|
| Render komentar |
|
|
| Menginterupsi tugas yang berjalan lama |
|
|
| Format ekspor: | ||
|
|
|
|
| XPS |
|
|
| HTML |
|
|
| TIFF |
|
|
| ODP | terbatas | terbatas |
| SWF | terbatas | terbatas |
| SVG |
|
|
| Format impor: | ||
| HTML | terbatas | terbatas |
| ODP |
|
|
| THMX |
|
|
| Fitur master slide: | ||
| Mengakses semua master slide yang ada |
|
|
| Membuat/menghapus master slide |
|
|
| Mengkloning master slide |
|
|
| Fitur layout slide: | ||
| Mengakses semua layout slide yang ada |
|
|
| Membuat/menghapus layout slide |
|
|
| Mengkloning layout slide |
|
|
| Fitur slide: | ||
| Mengakses semua slide yang ada |
|
|
| Membuat/menghapus slide |
|
|
| Mengkloning slide |
|
|
| Mengekspor slide ke gambar |
|
|
| Membuat/mengedit/menghapus bagian slide |
|
|
| Fitur slide catatan: | ||
| Mengakses semua slide catatan yang ada |
|
|
| Fitur bentuk: | ||
| Mengakses semua bentuk slide |
|
|
| Menambahkan bentuk baru |
|
|
| Mengkloning bentuk |
|
|
| Mengekspor bentuk terpisah ke gambar |
|
|
| Jenis bentuk yang didukung: | ||
| Semua jenis bentuk pra‑definisi |
|
|
| Bingkai gambar |
|
|
| Tabel |
|
|
| Diagram |
|
|
| SmartArt |
|
|
| Diagram lama |
|
|
| WordArt |
|
|
| Objek OLE, ActiveX | terbatas | terbatas |
| Bingkai video |
|
|
| Bingkai audio |
|
|
| Penghubung |
|
|
| Fitur grup bentuk: | ||
| Mengakses grup bentuk |
|
|
| Membuat grup bentuk |
|
|
| Melepas grup bentuk yang ada |
|
|
| Fitur efek bentuk: | ||
| Efek 2D | terbatas | terbatas |
| Efek 3D |
|
|
| Fitur teks: | ||
| Pemformatan paragraf |
|
|
| Pemformatan bagian |
|
|
| Fitur animasi: | ||
| Ekspor animasi ke SWF |
|
|
| Ekspor animasi ke HTML |
|
|