Aspose.Slides Xamarin için
Giriş
Xamarin, .NET C# ile mobil geliştirme için kullanılan bir çerçevedir. Xamarin, .NET platformunun yeteneklerini genişleten araçlar ve kütüphaneler sunar. Geliştiricilerin Android işletim sistemi için uygulamalar oluşturmasına olanak tanır.
Aspose.Slides API, Xamarin platformunda çalışır. Bunu sağlamak için Aspose.Slides .NET paketi, Xamarin için ayrı bir DLL ekler. Aspose.Slides for Xamarin, .NET sürümünde mevcut olan özelliklerin çoğunu destekler:
- sunumları dönüştürme ve görüntüleme.
- sunum içeriğini düzenleme: metin, şekiller, grafikler, SmartArt, ses/video, yazı tipleri vb.
- animasyon, 2D efektler, WordArt vb. ile çalışma.
- meta veri ve belge özellikleriyle çalışma.
- yazdırma, kopyalama, birleştirme, karşılaştırma, bölme vb.
Tam özellik karşılaştırmasını sayfanın alt kısmındaki başka bir bölümde bulabilirsiniz.
Aspose.Slides for Xamarin API’de sınıflar, ad alanları, mantık ve davranış mümkün olduğunca .NET sürümüne benzer. Aspose.Slides .NET uygulamalarınızı minimum maliyetle Xamarin’e taşıyabilirsiniz.
Hızlı Örnek
Aspose.Slides for Xamarin’i kullanarak C# uygulamanızı Slides for Android üzerinden oluşturabilir ve kullanabilirsiniz.
Android için Xamarin uygulamasının Aspose.Slides kullanarak sunum slaytlarını gösterdiği ve slayta dokunulduğunda yeni bir şekil eklediği bir örnek sağlıyoruz. Örneklerin tam kaynağını GitHub adresinde bulabilirsiniz.
Xamarin Android App oluşturarak başlayalım:
İlk olarak bir resim görünümü, Ön ve Sonraki düğmeleri içerecek bir içerik düzeni oluşturuyoruz:
XML - content_main.xml - İçerik düzenini oluşturma
<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>
Burada, örnek bir sunumu (“HelloWorld.pptx”) içeren “Aspose.Slides.Droid.dll” kütüphanesini Xamarin uygulama Assets’ine ekliyor ve başlatmasını MainActivity’e ekliyoruz:
C# - MainActivity.cs - Başlatma
[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;
}
}
}
Düğmelere dokunulduğunda Ön ve Sonraki slaytları gösteren işlevi ekleyelim:
C# - MainActivity.cs - Ön ve Sonraki düğme tıklamasında slaytları gösterme
[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;
}
}
Son olarak, slayta dokunulduğunda bir elips şekli ekleyen işlevi uygulayalım:
C# - MainActivity.cs - Slayt tıklamasında elips ekleme
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);
}
Sunum slaytına yapılan her tıklama, rastgele renkli bir elips ekler:
Desteklenen Özellikler
| ÖZELLİKLER | Aspose.Slides for .NET | Aspose.Slides for Xamarin |
|---|---|---|
| Sunum özellikleri: | ||
| Yeni sunumlar oluşturma |
|
|
| PowerPoint 97 - 2003 formatlarını açma/kaydetme |
|
|
| PowerPoint 2007 formatlarını açma/kaydetme |
|
|
| PowerPoint 2010 uzantı desteği |
|
|
| PowerPoint 2013 uzantı desteği |
|
|
| PowerPoint 2016 özellik desteği | restricted | restricted |
| PowerPoint 2019 özellik desteği | restricted | restricted |
| PPT’den PPTX’e dönüştürme |
|
|
| PPTX’den PPT’ye dönüştürme |
|
|
| PPT içinde PPTX | restricted | restricted |
| Tema işleme |
|
|
| Makro işleme |
|
|
| Belge özellikleri işleme |
|
|
| Şifre koruması |
|
|
| Hızlı metin çıkarma |
|
|
| Yazı tipi gömme |
|
|
| Yorum renderleme |
|
|
| Uzun süren görevlerin kesilmesi |
|
|
| Dışa aktarım formatları: | ||
|
|
|
|
| XPS |
|
|
| HTML |
|
|
| TIFF |
|
|
| ODP | restricted | restricted |
| SWF | restricted | restricted |
| SVG |
|
|
| İçeri aktarma formatları: | ||
| HTML | restricted | restricted |
| ODP |
|
|
| THMX |
|
|
| Ana slayt özellikleri: | ||
| Mevcut tüm ana slaytlara erişim |
|
|
| Ana slaytları oluşturma/kaldırma |
|
|
| Ana slaytların kopyalanması |
|
|
| Düzen slaytı özellikleri: | ||
| Mevcut tüm düzen slaytlarına erişim |
|
|
| Düzen slaytlarını oluşturma/kaldırma |
|
|
| Düzen slaytlarının kopyalanması |
|
|
| Slayt özellikleri: | ||
| Mevcut tüm slaytlara erişim |
|
|
| Slaytları oluşturma/kaldırma |
|
|
| Slaytları kopyalama |
|
|
| Slaytları görüntülere dışa aktarma |
|
|
| Slayt bölümlerini oluşturma/düzenleme/kaldırma |
|
|
| Not slaytı özellikleri: | ||
| Mevcut tüm not slaytlarına erişim |
|
|
| Şekil özellikleri: | ||
| Tüm slayt şekillerine erişim |
|
|
| Yeni şekil ekleme |
|
|
| Şekilleri kopyalama |
|
|
| Ayrı şekilleri görüntülere dışa aktarma |
|
|
| Desteklenen şekil türleri: | ||
| Tüm ön tanımlı şekil türleri |
|
|
| Resim çerçeveleri |
|
|
| Tablolar |
|
|
| Grafikler |
|
|
| SmartArt |
|
|
| Eski diyagram |
|
|
| WordArt |
|
|
| OLE, ActiveX nesneleri | restricted | restricted |
| Video çerçeveleri |
|
|
| Ses çerçeveleri |
|
|
| Bağlayıcılar |
|
|
| Grup şekil özellikleri: | ||
| Grup şekillerine erişim |
|
|
| Grup şekilleri oluşturma |
|
|
| Mevcut grup şekillerinin gruplama çözümü |
|
|
| Şekil efektleri özellikleri: | ||
| 2D efektler | restricted | restricted |
| 3D efektler |
|
|
| Metin özellikleri: | ||
| Paragraf biçimlendirme |
|
|
| Bölüm biçimlendirme |
|
|
| Animasyon özellikleri: | ||
| Animasyonu SWF’ye dışa aktarma |
|
|
| Animasyonu HTML’ye dışa aktarma |
|
|