'분류 전체보기'에 해당되는 글 653건

  1. 2014.08.19 이미지 RadioButton 다양한 해상도 지원하게 하기
  2. 2014.08.18 layout 가운데 정렬
  3. 2014.08.18 Action Bar 숨기기
  4. 2014.08.14 버튼에 상태 변화에 따라 효과 넣기
  5. 2014.08.13 Custom ListView 만들기
  6. 2014.08.13 file size 나타내기 간략하게...
  7. 2014.08.12 텍스트 파일 및 이미지 파일 저장 하기
  8. 2014.08.12 안드로이드내부에서 페이지 이동 Activity간의 이동
  9. 2014.07.16 롱클릭 버튼 소스
  10. 2014.06.03 윈8에서 터치가 안먹을때...
  11. 2014.06.02 DigitalPlaza Demo 서피스용
  12. 2014.05.26 [android] Eclipse에서 메서드 정의로 이동시 인터페이스(Interface)가 아닌 구상(Implementation) 클래스의 정의로 이동하기
  13. 2014.05.26 [android] string.xaml에 정의된 string 사용하기
  14. 2014.05.26 [android] 3G 인지 WIFI인지 체크하기
  15. 2014.05.15 아이폰 갈릴레오 오프라인맵 구글 맵 사용
  16. 2014.05.15 [android] 직접실행창이 없는 이클립스에서 비슷하게 구현하기(inspect 이용)
  17. 2014.05.13 [android] Thread에서 UI Update하기
  18. 2014.05.13 [Android] Thread를 이용한 UDP Server/Client 만들기
  19. 2014.05.09 [Android] 자기 아이피 받기
  20. 2014.04.10 Xaml에 있는 Storyboard를 새로생성된 오브젝트에 적용하기
  21. 2014.04.09 더블탭 구현
  22. 2014.04.08 MediaElement에서 video재생시킬때 출력디렉토리로 복사를 꼭 설정하자
  23. 2014.01.14 [surface] ScatterViewItem 끼리 Drag And Drop
  24. 2013.12.18 [포트폴리오] 롯데시네마 Windows8.1 APP(Hugeflow 2013.11~2013.12)
  25. 2013.12.04 웹에서 이미지 파일 다운받은훙에 이미지를 반으로 각각 Crop 하고 삭제하는 코드
  26. 2013.11.22 TextBlock에서 라인 띄우는 법
  27. 2013.10.15 T Generic 리턴하기
  28. 2013.10.07 MCP .Net 3.5 WPF Applicattion Development 자격증 저장
  29. 2013.09.13 [포트폴리오] (일반 터치) TeaTable (Hugeflow 2013.08~2013.09)
  30. 2013.08.08 크로스 플랫폼 p2p 세미나
Android App2014. 8. 19. 16:17

역시 기초가 있어야 되는가보다.. ㅎㅎ

 

이미지 라디오 버튼이야 널린게 예제지만 다양한 해상도에 맞게 px를 디자이너랑 dp로 계산해 가며 적용하였는데

 

hdpi에서는 잘맞지만 xhdpi, xxhdpi에서는 이미지가 짤려나왔다....

 

결국 성공한것은 weight를 이용한 퍼센트로 맞추기였다...

 

라디오 그룹안에 2개의 라디오버튼 있는데

 

각각 weight를 0.5로 맞추니 dp로 맞출랑 달리 잘 맞았다.

 

대신 이미지도 dp로 맞추는게 아니라 각해상도에 따라서 맞춰야 한다.... 정확히 반으로 해상도 width가 1080임으로

 

이미지도 540으로 나누었다 그러니까 맞는게 아닌가....

 

아무튼 dp로 하지말고 퍼센트로 하자

 

Posted by 동동(이재동)
Android App2014. 8. 18. 11:34

일단 가운데 정렬을 위해서는

 

FlameLayout 보다는 RelativeLayout을 사용하는것이 더 좋다....

 

xml에 이런식으로 사용하면 된다.

 android:layout_centerVertical="true"
 android:layout_centerHorizontal="true"  

 

wpf에서는 grid만 해두 충분했는데 크흑 ㅠㅠ

 

 

Posted by 동동(이재동)
Android App2014. 8. 18. 11:10

@Override
 public void onCreate(Bundle savedInstanceState)
 { 
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.filelist_view);

 

이부분을 추가하면 된다.

  requestWindowFeature(Window.FEATURE_NO_TITLE);

 

ActionBar actionbar = getActionBar()를 할경우 액션바를 지원하지 않는 이전버전에는 오류가 발생하기도 하고 컴파일이 안된다.

 

그래서 위방법으로 하자

 

스타일로 하는 방법도 있으나 저 위에 방법이 깔끔하다

 

참고 :   http://jystudynote.tistory.com/entry/Android%EC%95%A1%EC%85%98%EB%B0%94-%EC%97%86%EC%95%A0%EA%B8%B0

 

Posted by 동동(이재동)
Android App2014. 8. 14. 16:28

일단 res/drawable 폴더가 없으면 만든다.

 

그안에 xml 파일을 하나 넣는다 예제로 button_state.xml로 이렇게 넣는다.

 

헷갈렸던거는 drawable-hdmi, drawable-xhdmi,drawable-xxhdmi 이렇게 각 해상도 별로 폴더가 있는데

 

다 넣어야 되어야하는건가란느 의문이였다...

 

하지만 버튼 눌렀을때 와 보통 이미지는 그냥 저 폴더에 넣고

 

xml 파일만 drawable에 담는다....

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- selected -->
     <item android:state_selected="true"
        android:drawable="@drawable/btnfileviewer_press" />
     <!-- pressed -->
     <item android:state_pressed="true"
        android:drawable="@drawable/btnfileviewer_press" />
    <!-- focused -->
    <item android:state_focused="true"
        android:drawable="@drawable/btnfileviewer_press" />
    <!-- default -->
    <item android:drawable="@drawable/btnfileviewer_normal" />
</selector>

 

디폴트는 맨마지막에 넣어야 된다고 한다....

 

그리고 마지막으로 이미지 폴더에 저 selector를 적용한다.

 

 

<ImageButton
        android:id="@+id/imageButtonListOpen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="68dp"
        android:background="@android:color/transparent"
        android:src="@drawable/fileviewerbuttonstate" />

 

src에 xml 파일이름을 넣어주면 된다.

 

android:src="@drawable/fileviewerbuttonstate"

 

참고한곳 : http://www.androes.com/99

 

'Android App' 카테고리의 다른 글

layout 가운데 정렬  (0) 2014.08.18
Action Bar 숨기기  (0) 2014.08.18
Custom ListView 만들기  (0) 2014.08.13
file size 나타내기 간략하게...  (0) 2014.08.13
텍스트 파일 및 이미지 파일 저장 하기  (0) 2014.08.12
Posted by 동동(이재동)
Android App2014. 8. 13. 13:45

인터넷 검색하면 너무나도 많기 때문에

 

내가 유용했던 블러그를 적어둔다.

 

http://postbook.tistory.com/entry/%EC%BB%A4%EC%8A%A4%ED%85%80-%EB%A6%AC%EC%8A%A4%ED%8A%B8%EB%B7%B0%EC%9D%B4%EB%AF%B8%EC%A7%80%EC%99%80-%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C

 

안드로이드에서 ListView 커스텀은 WPF보다는 Cell 계념의 IOS와 더 비슷하다고 보면 되겠다...

 

결국 Model 하나 만들어서

 

Adapater를 만든후

 

FileListAdapter fileList = new FileListAdapter(this, R.layout.filelist_row, mItem);
        mlistView.setAdapter(fileList);

 

이런식으로 아답터를 셋해주면 된다.

 

여기서 R.layout.filelist_row는 IOS의 경우 Cell  WPF에서는 ItemTemplate 계념이라고 보면 된다.

 

그외 참고 한사이트

http://androidhuman.tistory.com/entry/11-List-%EC%A7%91%EC%A4%91%EA%B3%B5%EB%9E%B5-3-Custom-ArrayAdapter%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-ListView

Posted by 동동(이재동)
Android App2014. 8. 13. 13:41
String mFileSize = Formatter.formatShortFileSize(getBaseContext(),file.length());

 

포맷터를 이용하자 항상 편하다.

Posted by 동동(이재동)
Android App2014. 8. 12. 17:34

안드로이드에서

 

getFilesDir().getAbsolutePath();

를 하게 되면

앱내부에서 저장할수 있는 Path를 알수 있다.

 

data/data/앱이름/files 에 저장이 된다.

 

하지만 여기에 강제로 저장을 하게 되면 ..이렇게

 

String dirPath = getFilesDir().getAbsolutePath();

File saveFile = new File(dirPath+"/test.txt");
FileOutputStream fos = new FileOutputStream(saveFile);

 

읽기,쓰기 등등 아무 권한이 없는 파일이 생성된다.

 

그래서 나중에 이 파일을 읽을려고해도 읽을수가 없다... 물론 파일은 보인다.

 

수정된 코드는 이렇다.

 

 FileOutputStream fos = openFileOutput("test2.txt",Context.MODE_WORLD_READABLE);

 

 MODE_PRIVATE  혼자만 사용하는 배타적인 모드로 파일 생성 .. (디폴트)
 MODE_APPEND  파일이 이미 존재할 경우 덮어쓰기 모드로 열지 않고 추가 모드로 연다. ( 기존 내용에 추가 )
 MODE_WORLD_READABLE  다른 응용 프로그램이 읽을 수 있도록 허용
 MODE_WORLD_WRITEABLE  다른 응용 프로그램이 쓸 수 있도록 허용

 

이렇게 모드를 바꾼후에야 된다...

 

참고 :  http://enosent.tistory.com/4

 

이미지 파일은

 

  AssetManager manager = getAssets();
        InputStream open;
  try {
       open = manager.open("WhiteBall.jpg");
       Bitmap bitmap = BitmapFactory.decodeStream(open);
       FileOutputStream os = openFileOutput("WhiteBall.jpg",Context.MODE_WORLD_READABLE);        
       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
       os.close();
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 

이렇게 asset에서 파일을 불러와서 예제를 작성하였다.

 

 

 

 

 

 

 

Posted by 동동(이재동)
Android App2014. 8. 12. 14:42

페이지간의 Navigation하는것을 안드로이드에서는

 

Activity로 전환하기로 부른다.

 

머 페이지 이동이다...

 

일단 안드로이드에서는

 

/src 폴더에 비하인드로 사용할 java파일을 만들고

 

res/layout/   폴더에 view로 사용할 xml 파일을 만든다. 파일명은 소문자만 가능하다. ㅡ.ㅡ;;;;!!!

 

자바는 귀찮게 또 manifest에 등록을 해줘야 한다.. C#처럼 자동으로 등록하지 않는다 ... ㅠㅠ

 

 <application
        android:allowBackup="true"
        android:icon="@drawable/appicon"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".TakeOutMainActivity"
            android:label="@string/title_activity_main"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>           
        </activity>
        <activity  android:name="FileListActivity"></activity> <---이런식으로
    </application>

 

 

이런식으로 manifest에 등록후에

 

아까 만든 View와 behind에 쓰일 java 파일을

 

public class FileListActivity extends Activity  {
 
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.filelist_view);
 }
}

 

이런식으로 연결하고....

 

메인뷰에서  클릭이벤트가 발생될시에

 

 Intent intent = new Intent(TakeOutMainActivity.this,FileListActivity.class);
     startActivity(intent);

 

intent를 이용해서 이동하면 된다.

 

참고 :  http://croute.me/514

 

Posted by 동동(이재동)
Surface2014. 7. 16. 13:35

만들어봤다.

 

렌더링을 이용해서 따로 타이머를 이용하지 않았다.

 

LongClickButtonTest.zip

 

 

Posted by 동동(이재동)
Surface2014. 6. 3. 11:06

Surface 프로젝트는 윈8에서 터치이벤트가 작동하지 않는다.

 

이때 SurfaceWindow를 Window로 바꿔주는것만으로 작동되게 만들수 있다.

 

Posted by 동동(이재동)
포트폴리오2014. 6. 2. 16:09

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 동동(이재동)
Android App2014. 5. 26. 11:24

원래는  f3 이나 ctrl+ 마우스다...

 

인터페이스가 구현되어있으면 인터페이스로 가기 때문에

 

따로 이동할려면

 

Ctrl+T를 누르면 됨

Posted by 동동(이재동)
Android App2014. 5. 26. 11:22

 

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="hello">Hello World</string>

</resources>

 

 

someTextView.setText(getString(R.string.hello));

 

이렇게 사용~

Posted by 동동(이재동)
Android App2014. 5. 26. 11:17

AndroidManifest.xml에 아래를 추가

 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

 

주석은 그냥 참고~

 

private boolean IsWifiConnected() {
     ConnectivityManager connManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
     //NetworkInfo state_3g = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
     NetworkInfo state_wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    
     if(state_wifi.isConnected() == true)
      return true;    
     else
      return false;
    
     //return state_3g.isConnected() || state_wifi.isConnected();
 }
 

 

Posted by 동동(이재동)
좋은 프로그램2014. 5. 15. 14:10

Welcome to Mobile Atlas Creator

 

http://mobac.sourceforge.net/

 

를 다운받고

 

아래파일을 mapsources에 넣고 압축을 풀어준다.

 

해외여행갈때마다 썼는데

 

북마크기능도 1.99$지만 사야겠다... 아..내돈 ㅠㅠ

 

mapsources.zip

 

 

 

Posted by 동동(이재동)
Android App2014. 5. 15. 10:37

아 이클립스 정말... 최악이다...

 

2002년쯤에는 이클립스 우와 좋다 이랬었는데

 

비쥬얼스튜디오의 엄청난 버프를 받다보니.... 비쥬얼스튜디오와 비교될수도있고 익숙하지도 않을수도 있고..

 

디버깅도 구리고 오류처리 능력도 먼가 이상하다...

 

예전 아이폰할때 Xcode욕했었는데 이건머 ... 안드로이드 개발하면서 와...Xcode는 양반이구나 생각했다..

 

일단 이클립스는직접실행창이 없기 때문에 Expressions에 의지하는방법밖에 없나했었는데

 

어라 이클립스는 디버깅중에 코드입력이 가능했다.

 

거기다가 inspect라는 기능을 이용하면 비슷하게 구현가능했따.

 

방법은 코드를 입력후 드래그해서 선택후 Ctrl+Shift+I 누르면 된다..끝~

 

 

 

 

Posted by 동동(이재동)
Android App2014. 5. 13. 16:01

여러가지 방법이 있지만 아래와 post를 이용해 해보았다.

 

다른 방법은 천천히 공부해봐야겠다.

 

recieveMsgTextView.post(new Runnable(){
     public void run() {
      recieveMsgTextView.setText(msg);
     }
    });

 

 

참고 :http://variousapp.egloos.com/1403533

 

Posted by 동동(이재동)
Android App2014. 5. 13. 14:52

피씨와 폰과의 UDP 연결을 위해서 만들어 보았다.

일단 서버 부분이다.

만약 이렇게 쓰레드를 이용하지 않으면 UI가 나오기전에 계속 메세지를 리시브 받을 준비를 함으로 UI가 나오지 않는다.

쓰레드를 이용해서 메세지는 메세지대로 받고 다른 처리는 다른처리대로 하자.

 

static으로 해야하며 UI Update는 c# 의 Dispatcher가 없는데 post라는 메소드가 있어서 이용하였다.

 

static String msg;
 private static void runUdpServer() {
  new Thread(new Runnable() {
   public void run() {
    try{
    int serverPort = 11000;   
    DatagramSocket socket = new DatagramSocket(serverPort);
    
    while(true)
    {
    byte[] buf = new byte[1024];
    DatagramPacket packet = new DatagramPacket(buf,buf.length);
    socket.receive(packet);
    msg = new String(packet.getData(),0,packet.getLength());    
    recieveMsgTextView.post(new Runnable(){
     public void run() {
      recieveMsgTextView.setText(msg);
     }
    });
    }
   }catch(Exception e)
   {
    Log.d("test","r: Error");
   }
   }
    
  }).start();
 }

 

이건 안드로이드에서 메세지를 보내는 부분이다. 보내는부분은 쓰레드를 특별히 이용하지 않았다.

 

button.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
    Button clickedButton = (Button) v;

    try {

     byte[] buf = MsgEditText.getText().toString().getBytes();

     InetAddress serverAddr = InetAddress
       .getByName("192.168.10.37");

     DatagramSocket socket = new DatagramSocket();

     DatagramPacket out_datagramPacket = new DatagramPacket(buf,
       buf.length, serverAddr, 12800);
     socket.send(out_datagramPacket);

    } catch (UnknownHostException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (SocketException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  });

 

참조 : http://blog.naver.com/PostView.nhn?blogId=aoba0203&logNo=130169841108&beginTime=0&jumpingVid=&from=section&redirect=Log&widgetTypeCall=true

Posted by 동동(이재동)
Android App2014. 5. 9. 10:36

 

public String getLocalIpAddress() {
        try {
                Enumeration<NetworkInterface> en =  NetworkInterface.getNetworkInterfaces();               
                while(en.hasMoreElements()) {
                       NetworkInterface interf = en.nextElement();                      
                       Enumeration<InetAddress> ips = interf.getInetAddresses();
                            while (ips.hasMoreElements()) {
                              InetAddress inetAddress = ips.nextElement();
                              if (!inetAddress.isLoopbackAddress()) {
                                      return inetAddress.getHostAddress().toString();
                           }
                    }
                }
        } catch (SocketException ex) {
                //Log.e("Error", ex.toString());
         System.out.println(ex.toString());
         
        }
            return null;
      }

 

여러가지 소스를 찾아봤지만 이게 가장 깔끔한거 같다...

 

만약 그냥 저소스를 그대로 쓰면 에러가 난다.

 

NetworkInterface.getNetworkInterfaces();               

 

이부분 에서 exception이 나는데 권한이 없다고 나와서 보니

 

manifest에

 

   <uses-permission android:name="android.permission.INTERNET"/>

 

를 추가하니 잘되었다.

Posted by 동동(이재동)
Surface2014. 4. 10. 11:32

일단 스토리보드는 타겟이 있어야 한다 대부분 디자이너나 블랜드에서 만들면 타겟을

 

Storyboard.TargetName="xDetailItem"

 

이런코드가 삽입된다

 

일단 xaml에서 TargetName을 다 제거한다.. 그리고 이 타겟을 Behind에서 추가해준다.

 

일단 아래와 같이 제거

 

 <Storyboard x:Key="CalculatorOpen">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)">
                <EasingDoubleKeyFrame KeyTime="0" Value="0" />
                <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1" />
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                <EasingDoubleKeyFrame KeyTime="0" Value="0" />
                <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1" />
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
                <EasingDoubleKeyFrame KeyTime="0" Value="0" />
                <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1" />
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>

 

 

자 이제 code behind에서

 

  ScatterViewItem svi = new ScatterViewItem()
                {
                    Center = (e.Source as DragAndDropScatterViewItem).Center,
                    Content = CalUc,
                    Orientation = 0,
                    Width = 263,
                    Height = 311,
                    RenderTransformOrigin = new Point(0.5, 0.5),
                    CanScale = false,
                };
                TransformGroup transGroup = new TransformGroup();
                transGroup.Children.Add(new ScaleTransform());
                transGroup.Children.Add(new TranslateTransform());
                transGroup.Children.Add(new RotateTransform());
                transGroup.Children.Add(new SkewTransform());
                svi.RenderTransform = transGroup;
                xScatterView.Items.Add(svi);

 

이런식으로 오브젝트를  하나 만들었다.

xaml에 Transform을 이용하기 떄문에 오브젝트에서도 이렇게 만들어줘야 된다.

 

자 간단하게 타겟을 지정해보자.

 

   Storyboard sb = this.Resources["CalculatorOpen"] as Storyboard;

   sb.Begin(svi);

 

아... 간단하다. begin(오브젝트)만 붙이면 된다.

Posted by 동동(이재동)
Surface2014. 4. 9. 16:55

 private readonly Stopwatch _DoubleTapStopwatch = new Stopwatch();

 private Point _LastTapLocation;



  private bool IsDoubleTap(TouchEventArgs e)

        {

            Point currentTapPosition = e.GetTouchPoint(this).Position;

            bool tapsAreCloseInDistance = currentTapPosition.GetDistanceTo(_LastTapLocation) < 15;

            _LastTapLocation = currentTapPosition;


            TimeSpan elapsed = _DoubleTapStopwatch.Elapsed;

            _DoubleTapStopwatch.Restart();

            bool tapsAreCloseInTime = (elapsed != TimeSpan.Zero && elapsed < TimeSpan.FromSeconds(0.4));


            return tapsAreCloseInDistance && tapsAreCloseInTime;

        }


 private void DragAndDropScatterViewItem_PreviewTouchDown(object sender, TouchEventArgs e)

        {

            if (IsDoubleTap(e))

            {

//더블탭시 구현될 코드         

            }

        }



자세한 설명은 생략..

Posted by 동동(이재동)
Surface2014. 4. 8. 11:51

비쥬얼스튜디오에 비디오 파일을 추가하고 단순히 비디오만 나오게 할려고 했는데 안되길래 봤더니 (물리 폴더는 잘되었다 c:\..)


출력디렉토리 복사를 항상복사나,변경된 내용만 복사를 안해놔서 그랬다... 그러니 경로를 못찾을수밖에


이걸 왜 디폴트로 안해놓는건지...



Posted by 동동(이재동)
Surface2014. 1. 14. 11:00

일단 ScatterView안에서 ScatterViewItem A가 있으면 이걸 ScatterviewItem B로 끌어놓으면 없어지면서 이벤트가 발생하고 싶었다.

 

일단 Item A에 ContainerManipulationStarted 이벤트를 걸어서

 

 var svi = e.OriginalSource as ScatterViewItem;
            svi.BeginDragDrop(svi.DataContext);

 

이런식으로 BeginDragDrop 메소드를 실행해야만 한다.

 

그뒤에 끌어놓아질 Item B에는 AllowDrop = true로 하고

 

<s:ScatterViewItem s:SurfaceDragDrop.Drop="xScatterItem_Drop" AllowDrop="True"/>

 

xaml에서 s:SurfaceDragDrop.Drop="xScatterItem_Drop" 이렇게 이벤트를 걸면된다.

 

근데 이상하게 behind에는 안되는데 이유는 찾아봐야 할듯한다.

 

 

 

Posted by 동동(이재동)
포트폴리오2013. 12. 18. 10:42

1차와 2차로 진행될 예정이였던 롯데시네마 앱이다.

 

1차는 범위는

 

-허브 페이지

-현재 상영작

-상영 예정작

-영화 예매율 및 평점 순위

-전국 롯데시네마 영화관

-영화 상영시간

-공지사항 / 자주묻는 질문

 

였다….

 

2차는 결제 및 로그인을 추가하는것인데

 

나는 1차보다는 2차 기술 검토를 많이 했다…

 

롯데시네마 앱개발자도 없고 정확히 아는 사람 그리고 머 문서도 하나도 없어서

 

안드로이드, 아이폰 앱을 분석해서 많은 정보를 알아냈다 ㅠ.ㅠ

 

그리고 롯데시네마 테스트 서버에 ssl 인증서가 깔려있지 않아서 테스트하는데 애를 먹었다.

 

윈8에서 ssl 인증서를 무시하는게 8.1 sdk에서만 가능했다 다행히 8.1 프로젝트라 ssl문제는 해결했지만

 

로그인 쿠키 정보나 user agent 등의 정보는 피들러로 확인을 해서 해결하였다…(힘든 여정 에고)

 

근데 문제는 결제쪽이였다. 결제는 다른 플랫폼도 다 웹뷰를 사용했다…

 

하지만 윈8 용 웹뷰는 ssl 인증 무시도 안되고 스크립트 notify , 자바스크립트 alert를 지원하지 않아서

 

할수 없이 서버작업을 해야할 사항이였다…

 

일단 조사는 여기까지 하고 1차를 우선적으로 개발하였다.

 

머 1차는 별로 어려운게 없었다… 라이브 타일 템플릿을 자꾸바꿔서 귀찮긴했지만 ㅎ

 

 

 

 

 

 

 

 

Posted by 동동(이재동)
Windows8 App2013. 12. 4. 13:29
private async void GetFile()
       {
           Uri source = new Uri(imgUrl);
           StorageFile destinationFile;
           try
           {
               destinationFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(
                   "downloadimage.jpg", CreationCollisionOption.GenerateUniqueName);
           }
           catch (FileNotFoundException ex)
           {
               return;
           }
           BackgroundDownloader downloader = new BackgroundDownloader();
           DownloadOperation download = downloader.CreateDownload(source, destinationFile);
           await download.StartAsync();
 
           //ResponseInformation response = download.GetResponseInformation();
           var stream = await download.ResultFile.OpenReadAsync();
 
           BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
           InMemoryRandomAccessStream ras = new InMemoryRandomAccessStream();
           BitmapEncoder enc = await BitmapEncoder.CreateForTranscodingAsync(ras, decoder);
 
           BitmapBounds bounds = new BitmapBounds();
           bounds.Height = 274;
           bounds.Width = 382;
           bounds.Y = 0;
           bounds.X = 0;
 
           enc.BitmapTransform.Bounds = bounds;
           await enc.FlushAsync();
 
           BitmapImage bImg = new BitmapImage();
           bImg.SetSource(ras);
           xImage.Source = bImg;
 
           //2
           InMemoryRandomAccessStream ras2 = new InMemoryRandomAccessStream();
           BitmapEncoder enc2 = await BitmapEncoder.CreateForTranscodingAsync(ras2, decoder);
           BitmapBounds bounds2 = new BitmapBounds();
           bounds2.Height = 274;
           bounds2.Width = 382;
           bounds2.Y = 274;
           bounds2.X = 0;
 
           enc2.BitmapTransform.Bounds = bounds2;
           await enc2.FlushAsync();
 
           BitmapImage bImg2 = new BitmapImage();
           bImg2.SetSource(ras2);
           xImage2.Source = bImg2;
 
           var filed = await ApplicationData.Current.LocalFolder.GetFilesAsync();
 
           foreach (var item in filed)
           {
               //그냥 모두 삭제 삭제 안된 파일이 있을경우 파일이 커지는경우를 방지
               await item.DeleteAsync();
           }
       }

 

참고

다운로드

http://stackoverflow.com/questions/19272878/how-to-save-image-downloaded-from-urlserver-to-local-folder-in-windows-store-a

 

crop

http://stackoverflow.com/questions/12349611/how-to-resize-image-in-c-sharp-winrt-winmd

 

삭제:

http://stackoverflow.com/questions/14978526/how-delete-file-in-localstorage-on-winrt

Posted by 동동(이재동)
Windows8 App2013. 11. 22. 16:21
testText.Text = "Testing 123" + Environment.NewLine + "Testing ABC";
 
StringBuilder builder = new StringBuilder();
builder.Append(Environment.NewLine);
builder.Append("Test Text");
builder.Append(Environment.NewLine);
builder.Append("Test 2 Text");
testText.Text += builder.ToString();

http://stackoverflow.com/questions/15582398/programmatic-textblock-entry-with-linebreaks

Posted by 동동(이재동)
Windows8 App2013. 10. 15. 10:19

롯데시네마 같은 경우는 API를 따로 프로젝트로 빼내었다 유닛테스트에서도 사용하고 여러곳에서 유연하게 사용하기 위함

 

하지만 그렇게 함으로써 메세지박스를 뛰우지를 못해서 error 메세지만 따로 보내야 하는 경우가 생겼다..

 

그럴때 이렇게 하였다.

 

protected async Task<T> GetObjectAsync<T>(string url, HttpContent content) where T : ResultBase, new()
        {
            var uri = new Uri(BASE_DOMAIN + url);
            HttpResponseMessage result = null;
            try
            {
                result = await _httpClient.PostAsync(uri, content);
            }
            catch (Exception ex)
            {
                //var temp = new ResultBase() { err_message = ex.Message };
                return new T() { err_message = ex.Message };

            }

 

이부분을 잘보면 된다.

protected async Task<T> GetObjectAsync<T>(string url, HttpContent content) where T : ResultBase, new()

 

그래서 리턴을 이런식으로 가능하였다.

 return new T() { err_message = ex.Message };

참고한곳

http://stackoverflow.com/questions/4712567/c-sharp-generic-method-return-values

 

 


 


 

Posted by 동동(이재동)
포트폴리오2013. 10. 7. 11:59

나중에 출력할때 편하도록 여기에 저장 


 

MS_Learning_Transcript.PDF

 

MS_Learning_Transcript.XPS

 

Posted by 동동(이재동)
포트폴리오2013. 9. 13. 11:32

Surface에서는 태그 인식기술을 이용해서 사진 동영상을 띄울수 있었지만


일반 터치 패널에서는 태그를 인식할수 없기 때문에 물체(Object)의 크기를 인식해서 


서피스 태그처럼 구현한 프로젝트~


예를 들면 패널에 컵이나 차를 올리는것만으로도 5센치부터 10센치까지 둘레를 이용해서 


5센치컵을 올리면 5센치 컨텐츠를


6센치컵을 올리면면 6센치 컨텐츠를  화면에 보여준다.


서피스의 장점인 태그 인식기술이 이제 점점 필요 없게 되버린거 같다.


마지막은 TeaTable Content Manager로 


사용자가 직접 해당 Object의 Content를 센치별로 쉽게 바꿀수 있도록 도와주는 프로그램이다.








 

Posted by 동동(이재동)
세미나2013. 8. 8. 15:00

기본적인거라 부끄럽긴하다...

 

 

cross flatform p2p.txt

 

Cross Platform For Peer to Peer.pptx

 

Posted by 동동(이재동)