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

  1. 2015.12.08 웹캠위에 이미지를 오버랩 하여 스크린샷 찍기
  2. 2015.07.25 쓰레드(Thread) 정지하고 다시 시작하는법
  3. 2015.07.23 handler를 이용해 Thread UI 해결하기
  4. 2015.07.22 안드로이드 커스텀 이벤트 등록
  5. 2015.07.16 외부 라이브러리 jar 만들고 연동방법
  6. 2015.07.03 윈도우즈 스토어 앱에서 윈도우 버전 알기
  7. 2015.03.17 [포트폴리오] 오즈 디스플레이 치과 차트 프로그램
  8. 2015.03.12 영어 공부 사이트
  9. 2015.02.13 ScatterviewItem 뒤에 검은색 백그라운드 쉐도우 없애기
  10. 2014.12.11 [포트폴리오] 중국 Wanda 시네마 CMB
  11. 2014.12.11 [포트폴리오] 안드로이드용 TakeOut 2,0
  12. 2014.10.28 [android] kitcat 에서 refresh gallery 문제 3
  13. 2014.09.03 ADB 에러 - more than one device
  14. 2014.08.28 ImagePager SetCurrentItem으로 강제로 이동시 Smooth 하게 이동하기
  15. 2014.08.27 앱 종료 시점알기, 앱종료인지 아니면 Activity끼리 전환인지 구분
  16. 2014.08.21 안드로이드 InternalStrage에 파일저장할때 하위폴더를 만들어서 읽기
  17. 2014.08.19 이미지 RadioButton 다양한 해상도 지원하게 하기
  18. 2014.08.18 layout 가운데 정렬
  19. 2014.08.18 Action Bar 숨기기
  20. 2014.08.14 버튼에 상태 변화에 따라 효과 넣기
  21. 2014.08.13 Custom ListView 만들기
  22. 2014.08.13 file size 나타내기 간략하게...
  23. 2014.08.12 텍스트 파일 및 이미지 파일 저장 하기
  24. 2014.08.12 안드로이드내부에서 페이지 이동 Activity간의 이동
  25. 2014.07.16 롱클릭 버튼 소스
  26. 2014.06.03 윈8에서 터치가 안먹을때...
  27. 2014.06.02 DigitalPlaza Demo 서피스용
  28. 2014.05.26 [android] Eclipse에서 메서드 정의로 이동시 인터페이스(Interface)가 아닌 구상(Implementation) 클래스의 정의로 이동하기
  29. 2014.05.26 [android] string.xaml에 정의된 string 사용하기
  30. 2014.05.26 [android] 3G 인지 WIFI인지 체크하기
wpf2015. 12. 8. 15:46

웹캠 라이브러리는 사람들이 많이 쓰는 Aforge를 사용하였다.


문제는 웸캠 위에 이미지를 덫 씌워야 하는데 워터마크 처럼


그게 일반적인 방법으로는 안되서


 Drawing.Image image = Drawing.Image.FromFile("ct.png");

            System.Windows.Forms.PictureBox pic = new System.Windows.Forms.PictureBox()

            {

                Image = image,

                Height = 300,

                Width = 300,

                BackColor = Color.Transparent,

                SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage

            };


            VideoSourcePlayer.Controls.Add(pic);


보니까 이렇게 Controls에 add할수 있는게 있었다.


아쉽게도 windowsformshost를 사용하기 떄문에 picturebox를 이용하여야하고 투명으로 직접 설정해줘야 한다.


그러면 이렇게 된다.


소스는 여기에



WebcamTest.zip






'wpf' 카테고리의 다른 글

CustomControl ImageButton  (0) 2016.04.04
Height를 Width 비율에 맞게 나오게 하는 공식  (0) 2016.01.20
[wpf] 핑테스트 가능 코드  (0) 2009.09.29
[wpf] about Thread Pool  (1) 2009.09.24
[wpf] Thread Event ManualResetEvent AutoResetEvent  (0) 2009.09.24
Posted by 동동(이재동)
Android App2015. 7. 25. 17:30

찾아볼 시간이 없어서 그냥 간단한 방법으로 하였다,


public void connect(String nullMsg) {

broadCastThread = new Thread(new Runnable() {

public void run() {

try {

while (!broadCastThread.interrupted()) {

//구현

}

} catch (Exception e) {

e.printStackTrace();

}

}

});


broadCastThread.start();


}

그리고 멈출때는 


if (broadCastThread != null && broadCastThread.isAlive()) {

broadCastThread.interrupt();


그리고 다시 시작할때는 어쩔수 없이 connect()메소드를 다시 호출한다. 그냥 전역 쓰레드를 다시 정의해서 스타트 돌리는 꼼수이다.


wait, nofify도 된다는데 안되서 조금더 조사를 해봐야 할듯~

Posted by 동동(이재동)
Android App2015. 7. 23. 11:46

Handler mHandler = new Handler();


핸들러를 만들고

Thread 안에 이렇게 쓰면  UI를 변경할수 있다.

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

더 좋은 방법이 있지만 간단하게 사용할려면 이게 편한듯

참고 : http://blog.naver.com/slrkanjsepdi/90116465979


Posted by 동동(이재동)
Android App2015. 7. 22. 11:37

일단 커스텀 이벤트 등록


public interface MessageEventListener {

void onMessageEventListener(String msg);


}


이벤트를 보내기 위한 리스너 생성  (예: bc라는 클래스라고 하자)


public MessageEventListener mMessageListener;


public void setOnMessageListener(MessageEventListener listener){

mMessageListener = listener;

}



이벤트 받을 클래스에 리스너 등록

bc.setOnMessageListener(new MessageEventListener(){


@Override

public void onMessageEventListener(String msg) {

// TODO Auto-generated method stub

Log.i("CustomEvent", "Event Message : "+msg);

}

});



bc라는 클래스에서 이벤트를 호출 

mMessageListener.onMessageEventListener(msg);




Posted by 동동(이재동)
Android App2015. 7. 16. 13:34



1. 같은 워크스페이스에 안드로이드 빈프로젝트를 하나 만들고 src에 클래스 파일을 만든다.


2. libs에 > import > General > File System > jar가 위치한 폴더를 선택 > 원하는 jar 파일만 체크하여 추가.

  (폴더는 해당 bin에 자동으로 생성된 jar파일을 직접 선택)


3. 빌드패스에서  라이브러리 > Add JAR> lib폴더에 있는 jar 을 직접 선택


4. 메소드 실행후에  class 를 찾을수 없다는 메세지가 나오면 폴더 선택 버튼을 누르고 라이브러리 플더 자체를 선택한다.



Posted by 동동(이재동)
Windows10 App2015. 7. 3. 10:58

윈도우 스토어앱에서는

 

그 흔한 Osversion 메소드를 지원하지 않는다 ㅡ.ㅡ;;;

 

system.environment.osversion

 

그래서 어떻게 해야 하나 찾아봤는데 역시 구글신이 해결해주었다.

 

 

핵심소스는 이부분이다.

 

 

public static async Task<string> GetWindowsVersionAsync()
{
// There is no good place to get this so we're going to use the most popular
// Microsoft driver version number from the device tree.
var requestedProperties = new[] { DeviceDriverVersionKey, DeviceDriverProviderKey };
var microsoftVersionedDevices = (await PnpObject.FindAllAsync(PnpObjectType.Device, requestedProperties, RootContainerQuery))
.Select(d => new { Provider = (string)d.Properties.GetValueOrDefault(DeviceDriverProviderKey),
Version = (string)d.Properties.GetValueOrDefault(DeviceDriverVersionKey) })
.Where(d => d.Provider == "Microsoft" && d.Version != null)
.ToList();
var versionNumbers = microsoftVersionedDevices
.GroupBy(d => d.Version.Substring(0, d.Version.IndexOf('.', d.Version.IndexOf('.') + 1)))
.OrderByDescending(d => d.Count())
.ToList();
var confidence = (versionNumbers[0].Count() * 100 / microsoftVersionedDevices.Count);
return versionNumbers.Count > 0 ? versionNumbers[0].Key : "";
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고 :  http://stackoverflow.com/questions/10125324/get-os-version-in-winrt-metro-app-c-sharp

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

UWP(윈도우 유니버설 응용 프로그램)  (0) 2016.10.24
Posted by 동동(이재동)
포트폴리오2015. 3. 17. 14:26

치과 이미지 및 각종 문서를 테이블 PC에서 멋있는 UI로 보여주는 프로그램

 

실제 영국과 일본에서 많은 라이센스를 팔았다고 들음

 

 

 

 

 

 

 

 

 

Posted by 동동(이재동)
영어공부2015. 3. 12. 11:23
http://www.wordbreak.net/  깜박이 영어같은 단어암기 사이트
http://babel.altavista.com/translate.dyn  번역 사이트
http://kr.babelfish.yahoo.com/translate_txt  번역 사이트
http://www.gohackers.com/html/eng_edu/eng_edu.htm?idx=12  해커스 영어 학습 사이트
http://www.urbandictionary.com/  영어 슬랭 사전
http://www.eoneo.com/lang/en/freezone/grammarChecker/  영어 문법 검사
http://translate.google.com/  구글 번역 사이트
http://www.sharedtalk.com/  외국인 친구 사귀는 곳
http://www.keybr.com/welcome  영타연습, 속도측정
http://www.merriam-webster.com  영영 사전
http://www.uiowa.edu/~acadtech/phonetics/english/frameset.html발음교정사이트
http://www.elllo.org  혼자 영어공부하기 좋은 사이트
http://lingual.net/  영화로 영어공부
http://www.breakingnewsenglish.com/  브레이킹뉴스잉글리쉬, 뉴스, 스크립트, 연습문제등
http://englishcube.net/  영어공부 할 수 있는 온갖 사이트 망라
http://www.interpals.net/  외국인 펜팔사이트
http://www.bbc.co.uk/worldservice/learningenglish/  비비씨 러닝 잉글리시
http://blog.naver.com/mstarcom1  영어공부, 미국생활 블로그
http://www.omegle.com  외국인과 채팅

 

'영어공부' 카테고리의 다른 글

[site] 영어 채팅 에 빠져보자~  (0) 2009.06.15
영어 만화 사이트  (0) 2009.04.01
단어 공부하기 좋은 사이트^^  (0) 2009.03.18
homework in innotive (february, 23,2009)  (1) 2009.02.23
영어원서로 공부하자 영어  (0) 2008.12.30
Posted by 동동(이재동)
Surface2015. 2. 13. 13:44
ScatterViewItem svi = new ScatterViewItem();
svi.Background = new SolidColorBrush(Colors.Transparent);
svi.ShowsActivationEffects = false;
svi.BorderBrush = System.Windows.Media.Brushes.Transparent;

RoutedEventHandler loadedEventHandler = null;
loadedEventHandler = new RoutedEventHandler(delegate
{
    svi.Loaded -= loadedEventHandler;
    Microsoft.Surface.Presentation.Generic.SurfaceShadowChrome ssc;
    ssc = svi.Template.FindName("shadow", svi) as Microsoft.Surface.Presentation.Generic.SurfaceShadowChrome;
    ssc.Visibility = Visibility.Hidden;
});
svi.Loaded += loadedEventHandler;

참고 : http://stackoverflow.com/questions/4602013/removing-shadow-from-scatterviewitem-isnt-working

Posted by 동동(이재동)
포트폴리오2014. 12. 11. 11:55

중국 출장 3주간의 너무 힘든 일이였다.

 

개발환경도 힘들고 공사하는중에 개발을 해야해서 먼지도 많이 먹고 음식도 안맞고 잠도 힘들었다...

 

하루에 3시간 이상 잔적이 없는 엄청 힘들었던 프로젝트다.. 역시 중국 ㅠㅠ

 

모니터는 총 1920*1080 해상도로 왼쪽 4 중간 3 오른쪽 4 개로 총 11개의 모니터가 들어간다.

 

총 4개의 프로그램으로 나누어져 있는데

 

나는 이걸 cmba  ,cmb, cmbb 로 불렀다. 그리고 마지막 소켓 Server

 

젤 좌측에는 cms의 api로부터 대기오염정보난 공지사항 영화대사 , 음식 포스터 이미지등을 서버로부터 받아서 뿌려주며

애니메이션 된다.

 

가운데는

영화가 리스트가 보여지며 TimeTable 이 있어서 현재 시간에 맞게 영화가 보여지며 좌석수가 업데이트되고 타임테이블이

5분단위로 움직여서 항상 정해진 시간에 맞게 보여진다.

광고및 시간에 맞게 입장알림 기능이 있다.

 

오른쪽...이게 젤 힘들었던 부분인데

영화정보를 보여지는 부분인데 동영상 및 애니메이션이 너무 많이 들어가서 메모리 관리에 애를 먹었다.

사용한 애니메이션은 항상 지우고 새롭게 계속 추가 생성하는 형식으로 만들었으며

시간이 지난 영화는 삭제되고 좌석수는 5초 단위로 업데이트 되며 각종 영화정보및 영상이 나오고

광고및 입장알림 영화는 풀재생으로 된다.

 

이모든것을 컨트롤하는 소켓을 이용한 서버가 있으며

서버는 그냥 간단한 WPF ui로 만들었다.

 

현재 중국 완다 시네마에 정상적으로 작동중이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 동동(이재동)
포트폴리오2014. 12. 11. 11:43

개발언어 : 안드로이드

 

기존 TakeOut에 파일전송 기능이 파일 뷰어 기능을 추가한 버전이다.

 

테이블에서 색 패턴을 읽어서 핸드폰이랑 연동이 되어 이미지 및 각종 파일을 무선으로 전송할수 있고

 

파일 뷰어를 이용해 영구적으로 관리 할수 있고..

 

PDF, Image, pptx,xls 파일등을 클릭시 바로 확인 가능하다.

 

 

 

 

 

 

Posted by 동동(이재동)
Android App2014. 10. 28. 14:12

기존 킷켓 이전에는

 

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

 

이렇게해서 겔러리를 갱신했었지만

 

킷캣부터 이렇게 바꼈다

private void galleryAddPic() {
    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    File f = new File(mCurrentPhotoPath);
    Uri contentUri = Uri.fromFile(f);
    mediaScanIntent.setData(contentUri);
    this.sendBroadcast(mediaScanIntent);
}

 

대신에 저 photoPath에 경로를 주는것이 아니라 업로드한 사진 경로 풀경로를 줘야 한다는것이다. 파일이름까지

 

참고 : http://www.codeproject.com/Questions/689342/Refresh-gallery-in-android-kitkat

Posted by 동동(이재동)
Android App2014. 9. 3. 16:44

주로 이클립스에서 안드로이드 장치를 연결한 후 발생하는 에러.

 

실행 중에 운용하는 기기는 한 대 뿐인데 추가적으로 똑같은 기기가 더 출력되면서

 

정상적으로 실행이 안될때가 있다.

 

more than one device 또는 more than one device and emulator 에러 발생시

 

"cmd"에서 adb위치로 이동한다.

 

>> cd C:\Android\platform-tools

>> adb kill-server

>> adb start-server

Posted by 동동(이재동)
Android App2014. 8. 28. 17:49
setCurrentItem(count,true);

 

마지막에 true는 스무스하게 움직이게 하는거다

 

는 무슨.... 작동이 안된다.

 

그래서  ViewPager를 상속받아서 새로 만들었다.

 

package com.example.redcarpetwall;

import java.lang.reflect.Field;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.animation.DecelerateInterpolator;
import android.widget.Scroller;

public class ImageSlidePager extends ViewPager{
 
 public ImageSlidePager(Context context) {
        super(context);
    }

    public ImageSlidePager(Context context, AttributeSet attr) {
        super(context, attr);
        setMyScroller();
    }
   
   
  
    private void setMyScroller()
    {
      try
      {
              Class<?> viewpager = ViewPager.class;
              Field scroller = viewpager.getDeclaredField("mScroller");
              scroller.setAccessible(true);
              scroller.set(this, new MyScroller(getContext()));
      } catch (Exception e)
      {
          e.printStackTrace();
      }
    }
   
    public class MyScroller extends Scroller
    {
      public MyScroller(Context context)
      {
          super(context, new DecelerateInterpolator());
      }

      @Override
      public void startScroll(int startX, int startY, int dx, int dy, int duration)
      {
          super.startScroll(startX, startY, dx, dy, 1000 /*1 secs*/);
      }
    }
}

 

그러니 잘 작동한다.


이건 imageslide adapter

 

package com.example.redcarpetwall;

import android.R;
import android.app.Activity;
import android.content.res.AssetManager;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;

public class ViewPagerAdapter extends PagerAdapter {

 Activity activity;
 int imageArray[];

 public ViewPagerAdapter(Activity act, int[] imgArra) {
  imageArray = imgArra;
  activity = act;
 }

 public int getCount() {
  return imageArray.length;
 }

 public Object instantiateItem(View collection, int position) {
  ImageView view = new ImageView(activity);
//  view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
//    LayoutParams.FILL_PARENT));
  view.setScaleType(ScaleType.FIT_XY);
  //view.setBackgroundResource(imageArray[position]);
  view.setImageResource(imageArray[position]);
  ((ViewPager) collection).addView(view, 0);
  return view;
 }

 @Override
 public void destroyItem(View arg0, int arg1, Object arg2) {
  ((ViewPager) arg0).removeView((View) arg2);
 }

 @Override
 public boolean isViewFromObject(View arg0, Object arg1) {
  return arg0 == ((View) arg1);
 }

 @Override
 public Parcelable saveState() {
  return null;
 }
}

 

이건 xml

<com.example.redcarpetwall.ImageSlidePager
     android:id="@+id/imageSlidePager1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" >
 </com.example.redcarpetwall.ImageSlidePager>

 

 

귀찮아서 그냥 다 복불 ㅎㅎ

 

나중에 시간 되면 정리해야겠다.

 

참고한 사이트

이미지 슬라이드 : http://androidtrainningcenter.blogspot.kr/2012/10/viewpager-example-in-android.html


 

 

Posted by 동동(이재동)
Android App2014. 8. 27. 11:48

 public static boolean isApplicationSentToBackground(final Context context) {
      ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
      List<RunningTaskInfo> tasks = am.getRunningTasks(1);
      if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(context.getPackageName())) {
          return true;
        }
      }

      return false;
    }

 

onPause()를 오버라이드 해서

 

 

boolean temp = isApplicationSentToBackground(this);

 

사용하면 된다.

 

true일때는 사용자가  홈버튼을 눌렀을때 혹은 앱을 나갔을때

 

false일때는 나가지 않고 activity로 이동

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

역시 삽질을 함으로써 실력이 느는건가...

 

구글링을 이틀동안 했다.... ㅠㅠ

 

일단 내가 원하는건

 

이미지 전송받아서 특정폴더에 저장을 하고 위부  이미지 프로그램을로 이미지를 읽는것이였다.

 

한폴더에 저장하는것이야 쉽다.

 

FileOutputStream os = openFileOutput(filename,
     Context.MODE_WORLD_READABLE);

 

 

new FileOutputStream 을 쓰지 못한 이유는 바로 저 !!!!! 권한문제 때문이다....

 

권한이 읽는권한이 있어야..(바로 그냥 CHMOD 쓰고 싶다~~~~~~~ㅠㅠ)

 

Intent를 이용해서 외부에서 이미지를 읽을수 가있다.

 

저게 날 엄청나게 괴롭혔다..

 

일단 openFileoutput은 인자로 String을 받는데 여기서 경로는 못받는다. 오로지 파일이름만 받을수 있다!!!!

 

그러면 이게

 

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

 

하지만 난 서브폴더를 만들고 싶었다.

 

/data/data/앱이름/files/서브폴더

 

혹시나 openFileoutput 에 경로를 지정할수 있을까 해서 찾아봤지만 택도 없는소리!!!

 

그렇다면 일단 files폴더에 받아서 copy하면 어떨까... 하... 역시 카피 하는것도 new FileOutputStream을 이용해서 그냥 복사하는거뿐.... ㅠㅠ 그래서 copy받은 파일은 권한이 없다

 

그렇다면 파일에 권한을 직접 줄수는 없을까?

 

file.setReadable(true, false);

 

이렇게 해도 안되길레 아 이건원래 안되나 싶었는데

 

지푸라기 잡는 심정으로

 

intent를 사용하기전에

new java.io.File(mItem.get(position).GetPath()).setReadable(true, false);

 

이런식으로 강제로 읽기 권한을 주니!!!

 

으악!!!!! 된다..

 

이제 더럽고 치사한 openFileoutput쓰지말고 당당하게 new FileoutputStream을 쓰고 나중에 권한 설정만 바꾸자.

 

참고로 폴더도 read되게 만들었다.

 

 File dir = getDir("Gallery", Context.MODE_WORLD_READABLE);
 dir.mkdir();

 

 

 

 

 

 

.

 

 

 

Posted by 동동(이재동)
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 동동(이재동)