앱의 수익을 위한 전면광고 다는 방법입니다.

먼저 AdMob 을 통해 광고 ID 를 Android, iOS 별로 만들었다는 가정하에 진행합니다.

참고 : http://kjcoder.tistory.com/276 및 구글링

 

전면 광고를 넣기위해 DependencyService 를 사용해야합니다.

개념은 아래 링크를 통해서..^^

https://docs.microsoft.com/ko-kr/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction

간단하게 말하면 각 플랫폼별 기능을 .Net Standard 프로젝트에서 하나의 코드로 호출할 수 있도록 해주는 것입니다.

 

.Net Standard 프로젝트에 IInterstitialAd 인터페이스를 만듭니다.

namespace Test
{
    public interface IInterstitialAd
    {
        void Show(string adUnitId);
    }
}


Android 프로젝트에 아래의 NuGet 패키지를 설치합니다.

InterstitialAdByAndroid 클래스를 아래와 같이 추가합니다.

using Android.Content;
using Android.Gms.Ads;
using Android.Media;
using Test.Droid;
using System.Threading.Tasks;

[assembly: Xamarin.Forms.Dependency(typeof(InterstitialAdByAndroid))]
namespace Test.Droid
{
    class InterstitialAdByAndroid : AdListener, IInterstitialAd
    {
        InterstitialAd interstitialAd;

        public void Show(string adUnitId)
        {
            var context = Android.App.Application.Context;
            InterstitialAd ad = new InterstitialAd(context);
            ad.AdUnitId = adUnitId;

            this.interstitialAd = ad;
            OnAdLoaded();
            ad.AdListener = this;

            var requestBuilder = new AdRequest.Builder();
            ad.LoadAd(requestBuilder.Build());
        }

        public override void OnAdClosed()
        {

        }

        public override void OnAdLoaded()
        {
            base.OnAdLoaded();

            if (this.interstitialAd.IsLoaded)
            {
                this.interstitialAd.Show();
            }
        }
    }
}


iOS 프로젝트에 아래와 같은 NuGet 패키지를 설치합니다.

InterstitialAdByiOS 클래스를 아래와 같이 추가합니다.

using Google.MobileAds;
using Test.iOS;
using System.Threading.Tasks;
using UIKit;
using Xamarin.Forms;

[assembly: Xamarin.Forms.Dependency(typeof(InterstitialAdByiOS))]
namespace Test.iOS
{
    public class InterstitialAdByiOS : IInterstitialAd
    {
        Interstitial interstitialAd;

        public async void Show(string adUnitId)
        {
            this.interstitialAd = new Interstitial(adUnitId);
            this.interstitialAd.LoadRequest(Request.GetDefaultRequest());

            while (!this.interstitialAd.IsReady)
            {
                await Task.Delay(100);
            }

            Device.BeginInvokeOnMainThread(() => this.interstitialAd.PresentFromRootViewController(UIApplication.SharedApplication.Windows[0].RootViewController));
        }
    }
}


이제 마지막으로 실제 .Net Standard 프로젝트에서 호출하는 방법입니다.

// 전면 광고
string adUnitId = "ca-app-pub-4681470946279796/3339648514";
if (Device.RuntimePlatform == Device.iOS)
{
    adUnitId = "ca-app-pub-4681470946279796/8947198411";
}

DependencyService.Get<IInterstitialAd>().Show(adUnitId);

 

위와 같이 하면 전면광고가 노출되게 됩니다.

오른쪽에 악어가 서있는 거란다^^

'Life' 카테고리의 다른 글

드디어 애드센스 1000달러 돌파  (0) 2019.01.23
하담이가 만든 서있는 악어  (0) 2019.01.08
강제 환기 (제로홈) 설치 후기  (0) 2019.01.06
실력이점점 늘어가는 하담이  (0) 2019.01.01
올해의 다짐  (0) 2019.01.01
올해의 목표  (0) 2019.01.01

'MiGong' 카테고리의 다른 글

2019.1.14 미공 데이터  (0) 2019.01.14
2019.01.12 미공 데이터  (0) 2019.01.12
2019.1.8 미공 데이터  (0) 2019.01.08
2019.1.3 미공 데이터  (0) 2019.01.04
2018.12.31 미공 데이터  (0) 2018.12.31
2018.12.30 미공 데이터  (0) 2018.12.31

Editer 컨트롤에는 불행하게요 PlaceHolder 관련 속성이 없습니다.

(PlaceHolderColor 는 최근에 추가된 속성입니다.)

이를 만드는 방법입니다.

먼저 기본은 지난 글을 기본으로 해서 진행합니다.

 

.Net Statndrd 프로젝트에 CustomEditor 를 추가합니다.

using System;
using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;

namespace Test.Controls
{
    public class CustomEditor : Editor
    {
        public static BindableProperty PlaceholderProperty
         = BindableProperty.Create(nameof(Placeholder), typeof(string), typeof(CustomEditor));

        public static BindableProperty PlaceholderColorProperty
           = BindableProperty.Create(nameof(PlaceholderColor), typeof(Color), typeof(CustomEditor), Color.Gray);

        public static BindableProperty IsExpandableProperty
        = BindableProperty.Create(nameof(IsExpandable), typeof(bool), typeof(CustomEditor), false);

        public string Placeholder
        {
            get { return (string)GetValue(PlaceholderProperty); }
            set { SetValue(PlaceholderProperty, value); }
        }

        public Color PlaceholderColor
        {
            get { return (Color)GetValue(PlaceholderColorProperty); }
            set { SetValue(PlaceholderColorProperty, value); }
        }

        public bool IsExpandable
        {
            get { return (bool)GetValue(IsExpandableProperty); }
            set { SetValue(IsExpandableProperty, value); }
        }

        public CustomEditor()
        {
            TextChanged += OnTextChanged;
        }

        private void OnTextChanged(object sender, TextChangedEventArgs e)
        {
            if (IsExpandable) InvalidateMeasure();
        }
    }
}

 

Android 프로젝트에 CustomEditorRenderer 를 추가합니다.

using Android.Content;
using Android.Graphics.Drawables;
using Test.Controls;
using Test.Droid;
using System.ComponentModel;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(CustomEditor), typeof(CustomEditorRenderer))]
namespace Test.Droid
{
    public class CustomEditorRenderer : EditorRenderer
    {
        public CustomEditorRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Editor> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                // 밑줄을 보이지 않도록 하기
                GradientDrawable gd = new GradientDrawable();
                gd.SetColor(global::Android.Graphics.Color.Transparent);
                this.Control.SetBackgroundDrawable(gd);
            }

            if (e.NewElement != null)
            {
                var customControl = (CustomEditor)Element;

                if (!string.IsNullOrEmpty(customControl.Placeholder))
                {
                    Control.Hint = customControl.Placeholder;
                    Control.SetHintTextColor(customControl.PlaceholderColor.ToAndroid());
                }
            }
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);

            var customControl = (CustomEditor)Element;

            if (CustomEditor.PlaceholderProperty.PropertyName == e.PropertyName)
            {
                Control.Hint = customControl.Placeholder;
            }
            else if (CustomEditor.PlaceholderColorProperty.PropertyName == e.PropertyName)
            {
                Control.SetHintTextColor(customControl.PlaceholderColor.ToAndroid());
            }
        }
    }
}

 

iOS 프로젝트에 CustomEditorRenderer 를 추가합니다.

using Foundation;
using Test.Controls;
using Test.iOS;
using System.ComponentModel;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(CustomEditor), typeof(CustomEditorRenderer))]
namespace Test.iOS
{
    public class CustomEditorRenderer : EditorRenderer
    {
        UILabel placeholderLabel;

        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Editor> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                if (placeholderLabel == null)
                {
                    CreatePlaceholder();
                }
            }

            if (e.NewElement != null)
            {
                var customControl = (CustomEditor)e.NewElement;

                if (customControl.IsExpandable)
                    Control.ScrollEnabled = false;
                else
                    Control.ScrollEnabled = true;
            }
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);

            var customControl = (CustomEditor)Element;

            if (CustomEditor.IsExpandableProperty.PropertyName == e.PropertyName)
            {
                if (customControl.IsExpandable)
                    Control.ScrollEnabled = false;
                else
                    Control.ScrollEnabled = true;
            }
        }

        public void CreatePlaceholder()
        {
            var element = Element as CustomEditor;

            if (element == null) return;

            placeholderLabel = new UILabel
            {
                Text = element.Placeholder,
                TextColor = element.PlaceholderColor.ToUIColor(),
                BackgroundColor = UIColor.Clear
            };

            var edgeInsets = Control.TextContainerInset;
            var lineFragmentPadding = Control.TextContainer.LineFragmentPadding;

            Control.AddSubview(placeholderLabel);

            var vConstraints = NSLayoutConstraint.FromVisualFormat(
                "V:|-" + edgeInsets.Top + "-[PlaceholderLabel]-" + edgeInsets.Bottom + "-|", 0, new NSDictionary(),
                NSDictionary.FromObjectsAndKeys(
                    new NSObject[] { placeholderLabel }, new NSObject[] { new NSString("PlaceholderLabel") })
            );

            var hConstraints = NSLayoutConstraint.FromVisualFormat(
                "H:|-" + lineFragmentPadding + "-[PlaceholderLabel]-" + lineFragmentPadding + "-|",
                0, new NSDictionary(),
                NSDictionary.FromObjectsAndKeys(
                    new NSObject[] { placeholderLabel }, new NSObject[] { new NSString("PlaceholderLabel") })
            );

            placeholderLabel.TranslatesAutoresizingMaskIntoConstraints = false;

            Control.AddConstraints(hConstraints);
            Control.AddConstraints(vConstraints);
        }
    }
}

 

xaml 코드

콘텐츠 페이지를 만들어 아래와 같이 코딩합니다.

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:controls="clr-namespace:Test.Controls"
             x:Class="Test.TestPage" BackgroundColor="#253570">
    <ContentPage.Content>
            <StackLayout>
                    <controls:CustomEditor x:Name="customEditor" Margin="7,0,7,0"
                                       BackgroundColor="#DEDFE4" FontSize="15"
                                       IsExpandable="true" Placeholder = "내용(30자이내)" PlaceholderColor="Blue"
                                       MaxLength="30" />
            </StackLayout>
    </ContentPage.Content>
</ContentPage>

 

결과

PlaceholderColor="SlateGray"

 

깃헙에서 좋은 일을 하네요.^^

https://blog.github.com/2019-01-07-new-year-new-github/?fbclid=IwAR0zdPAIJ96Zr5LkbpvMu2pkdTR6ha5fWlUl9dWhtHwwFzrvuIawOrYc9LM

Today we’re announcing two major updates to make GitHub more accessible to developers: unlimited free private repositories, and a simpler, unified Enterprise offering. We’re excited about these updates to our Free and Enterprise offerings:

  • GitHub Free now includes unlimited private repositories. For the first time, developers can use GitHub for their private projects with up to three collaborators per repository for free. Many developers want to use private repos to apply for a job, work on a side project, or try something out in private before releasing it publicly. Starting today, those scenarios, and many more, are possible on GitHub at no cost. Public repositories are still free (of course—no changes there) and include unlimited collaborators.

  • GitHub Enterprise is the new unified product for Enterprise Cloud (formerly GitHub Business Cloud) and Enterprise Server (formerly GitHub Enterprise). Organizations that want the flexibility to use GitHub in a cloud or self-hosted configuration can now access both at one per-seat price. And with GitHub Connect, these products can be securely linked, providing a hybrid option so developers can work seamlessly across both environments.

Learn more

GitHub Pro (formerly GitHub Developer) and GitHub Team are also available for developers and teams who need professional coding and collaboration features. And of course, open source contributors will still have everything they need to collaborate on public repositories, including our free version of GitHub Team.

Whether you’re a student about to write your first line of code, an enterprise leader with teams around the world, or an open source maintainer, we want GitHub to be the best place for you to code, collaborate, and connect with the global community of developers. Today’s changes are a big investment in the future of GitHub, and we’re excited to see what you build in 2019.

 

오늘 우리는 GitHub에 개발자가보다 쉽게 ​​접근 할 수 있도록하는 두 가지 주요 업데이트, 즉 무제한 무료 개인 저장소와보다 단순한 통합 엔터프라이즈 서비스를 발표했습니다.  무료 및 엔터프라이즈 제품에 대한 다음과 같은 업데이트에 흥분됩니다.

•  GitHub Free 는 무제한 개인 저장소를 포함합니다.  개발자는 처음으로 개인 프로젝트에 GitHub를 사용할 수 있으며 저장소 당 최대 3 명의 공동 작업자를 무료로 사용할 수 있습니다.  많은 개발자들은 사설 리포지셔닝을 사용하여 일자리를 신청하거나, 부 프로젝트에서 일하거나, 공개적으로 공개하기 전에 사적으로 뭔가를 시도하려고합니다.  오늘부터 GitHub에서 무료로 이러한 시나리오를 비롯한 다양한 시나리오를 사용할 수 있습니다.  공개 저장소는 여전히 무료이며 (변경 사항 없음) 무제한 공동 작업자가 포함됩니다.


•  GitHub Enterprise 는 Enterprise Cloud (이전의 GitHub Business Cloud) 및 Enterprise Server (이전의 GitHub Enterprise)를위한 새로운 통합 제품입니다.  클라우드 또는 자체 호스팅 구성에서 GitHub를 사용할 수있는 유연성을 원하는 조직에서는 이제 한 시트 가격으로 두 가지 모두에 액세스 할 수 있습니다.  또한 GitHub Connect 를 통해 이러한 제품을 안전하게 연결할 수 있으므로 하이브리드 옵션을 통해 개발자는 두 환경에서 원활하게 작업 할 수 있습니다.


 더 알아보기

 GitHub Pro (구 GitHub 개발자) 및 GitHub 팀은 전문적인 코딩 및 공동 작업 기능이 필요한 개발자 및 팀에서도 사용할 수 있습니다.  물론 공개 소스 제공자는 GitHub Team 무료 버전을 포함하여 공개 저장소에서 공동 작업하는 데 필요한 모든 것을 제공합니다.

 첫 번째 코드를 작성하려는 학생이든, 전 세계 팀을 보유한 엔터프라이즈 리더 또는 오픈 소스 관리자이든 관계없이 GitHub는 코드 작성, 공동 작업 및 글로벌 고객과의 연결을위한 최고의 장소가되기를 바랍니다. 개발자 커뮤니티  오늘의 변화는 GitHub의 미래에 대한 큰 투자이며 2019 년에 구축 한 것을 보게되어 기쁩니다.

Editer 컨트롤에서 사용자가 입력한 글자가 컨트롤 크기를 벗어날 때 자동으로 옆과 아래쪽으로

Editer 가 늘어나도록 하는 방법입니다.

우선 .Net Standard 프로젝트에 CustomEditor 를 추가합니다.

using System;
using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;

namespace Test.Controls
{
    public class CustomEditor : Editor
    {
        public static BindableProperty IsExpandableProperty
        = BindableProperty.Create(nameof(IsExpandable), typeof(bool), typeof(CustomEditor), false);

        public bool IsExpandable
        {
            get { return (bool)GetValue(IsExpandableProperty); }
            set { SetValue(IsExpandableProperty, value); }
        }

        public CustomEditor()
        {
            TextChanged += OnTextChanged;
        }

        private void OnTextChanged(object sender, TextChangedEventArgs e)
        {
            if (IsExpandable) InvalidateMeasure();
        }
    }
}

InvalidateMeasure 부분이 핵심입니다

 

Android 프로젝트에 CustomEditorRenderer 를 추가합니다.

Android 쪽은 추가 하지 않아도 기능은 동작합니다.

다만 밑줄을 안보이게 하기위해 추가된거라고 보면되겠네요.(그리고 나중을 위해서^^)

using System.ComponentModel;
using Android.Content;
using Android.Graphics.Drawables;
using Test.Controls;
using Test.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(CustomEditor), typeof(CustomEditorRenderer))]
namespace Test.Droid
{
    public class CustomEditorRenderer : EditorRenderer
    {
        public CustomEditorRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Editor> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                // 밑줄을 보이지 않도록 하기
                GradientDrawable gd = new GradientDrawable();
                gd.SetColor(global::Android.Graphics.Color.Transparent);
                this.Control.SetBackgroundDrawable(gd);
            }
        }
     }
}

 

iOS 프로젝트에도 CustomEditorRenderer 를 추가합니다.

using System.ComponentModel;
using Test.Controls;
using Test.iOS;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(CustomEditor), typeof(CustomEditorRenderer))]
namespace Test.iOS
{
    public class CustomEditorRenderer : EditorRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Editor> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {
                var customControl = (CustomEditor)e.NewElement;

                if (customControl.IsExpandable)
                    Control.ScrollEnabled = false;
                else
                    Control.ScrollEnabled = true;
            }
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);

            var customControl = (CustomEditor)Element;

            if (CustomEditor.IsExpandableProperty.PropertyName == e.PropertyName)
            {
                if (customControl.IsExpandable)
                    Control.ScrollEnabled = false;
                else
                    Control.ScrollEnabled = true;
            }
        }
    }
}

 

xaml 코드

콘텐츠 페이지를 만들어 아래와 같이 코딩합니다.

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:controls="clr-namespace:Test.Controls"
             x:Class="Test.TestPage" BackgroundColor="#253570">
    <ContentPage.Content>
            <StackLayout>
                    <controls:CustomEditor x:Name="customEditor" Margin="7,0,7,0"
                                                   BackgroundColor="#DEDFE4" FontSize="15" HorizontalOptions="Start"
                                                   IsExpandable="true" MaxLength="30" />
            </StackLayout>
    </ContentPage.Content>
</ContentPage>

위코드 CustomEditor 의 IsExpandable = true 로 가변크기가 가능하도록 했고 MaxLength 30으로 길이 제한이 있도록 했습니다.

 

이제 실행해 보면

Editer 에 글자를 입력하면 입력한 대로 Editer 크기가 변하는 걸 확인할 수 있습니다.

(캡쳐하다가 마우스 포인터까지..;;)

아래위나 옆으로 컨트롤이있다면 그 컨트롤들이 밀리면서 늘어나기때문에 글자 입력이 잘리지 않습니다.

 

 

모바일에서 기본 폰트는 깔끔하지만

디자인을 위해 다른 폰트를 적용하고 싶을 때가 있습니다.

안드로이드, iOS  에 적용하는 방법을 소개합니다.

 

우선 Android 안드로이드나 iOS 프로젝트에 폰트 파일을 import 시켜야합니다.

(폰트 파일 예시 : Binggrae.ttf)

Android 프로젝트는 Assets 폴더에

iOS 프로젝트는 Resources 폴더에 폰트 파일을 추가합니다.

추가로, iOS 는 Info.plist 파일에 아래 처럼 내용을 추가해야합니다.

<key>UIAppFonts</key>
 <array>
  <string>Binggrae.ttf</string>
 </array>

 

이제 각 프로젝트(Android,iOS)에 파일을 하나씩 추가해야합니다.

ExtendedRendrerer 를 추가할껀데 이것의 의미는 쉽게 말하면 기본 컨트롤에 대해서

각 기기 별로 커스텀하게 적용할 부분이 필요할 때 사용되는 것이라 보면됩니다.

우리는 폰트를 변경할 것이므로 폰트만 바꾸는 코드를 넣을 것입니다.

Button 예시입니다.

Android

using Android.Content;
using Android.Graphics;
using Test.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(Button), typeof(ExtendedButtonRenderer))]
namespace Test.Droid
{
    public class ExtendedButtonRenderer : ButtonRenderer
    {
        public ExtendedButtonRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                  Control.Typeface = Typeface.CreateFromAsset(base.Context.Assets, "Binggrae.ttf");
            }
        }
    }
}

iOS

using Test.iOS;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(Button), typeof(ExtendedButtonRenderer))]
namespace Test.iOS
{
    public class ExtendedButtonRenderer : ButtonRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {
                Control.Font = UIKit.UIFont.FromName("Binggrae", (System.nfloat)e.NewElement.FontSize);
            }
        }
    }
}

위처럼 적용하면 앱내 모든 버튼의 Text 는 Binggrae 폰트가 적용되어 보여집니다.

Picker, Entry, Label.. 등의 컨트롤 모두가 ExtendedRendrerer 를 구성해야 폰트가 적용됨을 유의해야합니다.

 

추가로 Android 는 한가지 방법이 더 있습니다.

아래 처럼 각 컨트롤의 FontFamily 에 아래처럼 폰트 파일명과 폰트 이름을 넣으면 폰트가 적용됩니다.

FontFamily="Binggrae.ttf#Binggrae"

(iOS 는 안됨.^^;)

 

강제 환기킷이 왔다

솔직한 후기를 작성해 본다.

포장은 튼튼하게 왔다.

청정기는 박스안에 또 박스가 있었다.;

아래는 필터, 필터는 공기 청정기에 장착되어있다. 빼서 비닐을 벗기고 장착해야한다.

전체적인 외관은 단순하다.

 

 

우선 날씨가 너무 추워 우선 공기 청정기 성능만 테스트 해봤다.

환기 후 (pm2.5 20) 일때 공기 청정기를 돌렸다.

성능은 좋다 pm2.5 수치가 1~2 사이에서 왔다갔다 한다.

날씨가 조금 풀렸을때 강제 환기 킷을 설치했다.

아래는 환기킷 박스 내용물들이다. 어떻게 설치하는건지 설명이 자세하지 않아서 좀 당황했지만

금방 알아차리고 설치를 시작했다.

아래 처럼 설명은 나와있는데 좀 더 자세했으면....;;

창문 환기킷을 장착한 모습니다.

좀 애먹었다 ..; 나사 조이는부분이 거지같다;; 왜 이렇게 만든건지 모르겠지만. 암튼 힘겹게 했다.

둘이하는걸 추천...;; 그리고 중국제라고 써있는데 설치하면서 좀 찝찝한 느낌.. 머랄까..

창문을 닫고 공기 청정기와 연결을 하자

생각보다 환풍구?? 연결제품이 길다.

창문이 높게 있어서 커버가 될것으로 보인다.

전원을 켜고 돌려보니 소음은 살짝 있으나 바람세기를 낮추면 괜찮은 편이다.

다만 냄새가 조금 난다. 아무래도 처음에만 나는것으로 보이는데

필터를 일단 교환하기로 해서 교환하고 또 확인해 봐야겠다.

 

결론

성능은 일단 만족

설치가 여려움

냄새가 조금 나는데 필터 문제인지 확인 필요

 

 

'Life' 카테고리의 다른 글

드디어 애드센스 1000달러 돌파  (0) 2019.01.23
하담이가 만든 서있는 악어  (0) 2019.01.08
강제 환기 (제로홈) 설치 후기  (0) 2019.01.06
실력이점점 늘어가는 하담이  (0) 2019.01.01
올해의 다짐  (0) 2019.01.01
올해의 목표  (0) 2019.01.01

폰 사용자가 기본 글자 크기를 키워버린 경우

아래처럼 디자인에 악영향을 줄수 있다.

안드로이드에서는 아래와 같은 경우 아래 코드를 삽입하여 해결할 수 있다.

안드로이드 프로젝트에서 MainActivity.cs 파일에 아래 코드를 삽입하면 된다.

using Android.Content.Res; 을 추가하고

        public override Resources Resources
        {
            get
            {
                Resources res = base.Resources;
                Configuration config = new Configuration();
                config.SetToDefaults();
                res.UpdateConfiguration(config, res.DisplayMetrics);
                return res;
            }
        }

위 코드를 삽입하면 아래처럼 사용자가 글자크기를 키웠음에도 크기를 기본 폰트 크기로 고정할 수 있다.

두개다 직구로 구매했다.

기존(e-star) 제품이 발열이 심해 교체를 결심하고

우선 가격이 낮은 WD Black 를 구매해 사용하다가

970 Pro 가 낮은 가격에 프로모션 할인까지 먹여 가격이 많이 하락되어 구매하고 말았다.

이덕에 두가지 제품을 비교하게 되었다.

패키징은 970 Pro 가 더 고급지긴하다.

SSD 를 76 % 사용한 상태에서 테스트 했다.

 

970 Pro

 

WD Black

성능은 그리 큰차이가 없다.

하지만 SAMSUNG SSD 는 정말 발열은 최고로 잘잡아 주는것 같다.

평상시에는 34도 정도를 유지한다.

+ Recent posts

티스토리 툴바