2012. 11. 30. 15:11

 

<com.example.android.apis.view.LabelView
            android:background="@drawable/red"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:text="Red"/>
   
    <com.example.android.apis.view.LabelView
            android:background="@drawable/blue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:text="Blue" app:textSize="20dp"/>
   
    <com.example.android.apis.view.LabelView
            android:background="@drawable/green"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:text="Green" app:textColor="#ffffffff" />

 

values/color.xml

 

<resources>
    <drawable name="red">#7f00</drawable>
    <drawable name="blue">#770000ff</drawable>
    <drawable name="green">#7700ff00</drawable>

 <drawable name="yellow">#77ffff00</drawable>
 
 <drawable name="screen_background_black">#ff000000</drawable>
    <drawable name="translucent_background">#e0000000</drawable>
    <drawable name="transparent_background">#00000000</drawable>

    <color name="solid_red">#f00</color>
    <color name="solid_blue">#0000ff</color>
    <color name="solid_green">#f0f0</color>
    <color name="solid_yellow">#ffffff00</color>

</resources>

Posted by hoonihoon
2012. 11. 28. 16:58

 

@ 스크린 사이즈 구하기

DisplayMetricsdm = new DisplayMetrics();

getWindowManager().getDefeaultDisplay().getMetrics(dm);

dm.widthPixels;

dm.heightPixels;

 

@ 레이아웃 사이즈 구하기

LinearLayout animLayout;

animLayout = (LinearLayout) findViewById(R.id.anim_layout);

int w = animLayout.getMeasuredWidth();

int h = animLayout.getMeasuredHeight();

Posted by hoonihoon
2012. 11. 19. 13:37

디자인 패턴에서 꼭 필요한 플러그인 이다.

설치 후 만들어 본것입니다.

몇번의 설치 실패후 만들어진 감격.

설치방법을 따라 가봅시다.

우선 아래 주소로 가서

자신의 환경에 맞는 JDK 버전과 이클립스에 버전을 확인 후 알맞게 다운로드 합니다.

http://www.soyatec.com/euml2/installation/offline.php#offline

그런데,

요구 스펙에 JDK 1.6 버전은 없습니다.

그래도 현재 1.6을 주로 사용하기 때문에 그냥 깔아봅시다.

일단 최신버전으로 다운로드 합니다. 이클립스 버전하고 잘 맞추세요.

free 버전과 studio 버전이 있는데 어떤게 좋은지는 모르겠음.

저는 간단히 사용할 목적이기 때문에 그냥 studio로 깔았습니다.

free 버전에서는 JDK1.6 버전은 자꾸 에러 로그를 낸다고 하더군요.

다운 받고 경로를 기억해 둡니다.

이클립스를 실행합니다.

저의 이클립스 버전은 3.5.2 SR2 갈릴레오 EE 버전 입니다.

(이클립스 3.6 버전인 헬리오스(클래식 버전) 에서도 설치가 된다고 하더군요.)

이제 이클립스가 실행됬다면 플러그인을 설치합니다.

Name 은 아무거나 해주어도 상관없습니다.

Archive 버튼을 누루고 아까 받은 zip 파일을 선택해줍니다.

저는 이미 설치가 되어 있으서 Duplicate 가 뜹니다.

OK 버튼을 누르고 다음으로 넘어갑니다.

버전에 따라 다르겠지만 보통 이런 2개의 플러그인이 나타나는데

주의 할것은 첫번째 체크 항목인 Documentation 에 체크하고 설치시 오류를 냅니다.

이거 땜에 삽질 엄청 했습니다.

또 이클립스 버전에 따라 다르겠지만,

저는 설치시 이미 설치된 프로그램 이라고 떴습니다만, 그냥 무시하고 계속 진행했더니 성공했습니다.

완전히 성공했는지는 잘 모르겠습니다.

계속 Next 와 OK 또는 라이센스 동의 창이 나오면 동의하시면 됩니다.

설치가 끝나면 이클립스 재시작 하고 뜹니다.

재시작 합니다.

UML 보기 원하는 파일 또는 패키지, 프로젝트를 마우스 우클릭 한 뒤에

클래스 다이어그램 에딧을 클릭합니다.

옵션들을 선택해주고

다이어그램에서 뵈 원하는 클래스들을 선택합니다.

그 다음 OK 버튼.

성공!

이거 설치 안되서 몇일 고생 했습니다.

즐거운 프로그래밍 하세요.

[출처] 이클립스 플러그인 클래스 다이어그램 eUML2 설치|작성자 freesemo

 

Posted by hoonihoon
2012. 11. 15. 16:54

퍼온 곳 :http://javaexpert.tistory.com/trackback/457

 

Hello Friends,

There are two or many more header listview in android. So Today we are discussed about the two header of android.

And See Also Simple Listview Display In Android Device.

So This are the all java and xml file given below. and this are the very useful projects.

main.xml


<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="true"
/>

header.xml

<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center" android:scrollbars="none"
style="?android:attr/listSeparatorTextViewStyle" />

Now The java File code Given below.

SectionedAdapter .java

package com.android.listview;

import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.BaseAdapter;
import java.util.ArrayList;
import java.util.List;

abstract public class SectionedAdapter extends BaseAdapter {
abstract protected View getHeaderView(String caption, int index,
View convertView, ViewGroup parent);

private List
sections = new ArrayList
();
private static int TYPE_SECTION_HEADER = 1;

public SectionedAdapter() {
super();
}

public void addSection(String caption, Adapter adapter) {
sections.add(new Section(caption, adapter));
}

public Object getItem(int position) {
for (Section section : this.sections) {
if (position == 0) {
return (section);
}

int size = section.adapter.getCount() + 1;

if (position <>
return (section.adapter.getItem(position - 1));
}

position -= size;
}

return (null);
}

public int getCount() {
int total = 0;

for (Section section : this.sections) {
total += section.adapter.getCount() + 1; // add one for header
}

return (total);
}

public int getViewTypeCount() {
int total = 1; // one for the header, plus those from sections

for (Section section : this.sections) {
total += section.adapter.getViewTypeCount();
}

return (total);
}

public int getItemViewType(int position) {
int typeOffset = TYPE_SECTION_HEADER + 1; // start counting from here

for (Section section : this.sections) {
if (position == 0) {
return (TYPE_SECTION_HEADER);
}

int size = section.adapter.getCount() + 1;

if (position <>
return (typeOffset + section.adapter
.getItemViewType(position - 1));
}

position -= size;
typeOffset += section.adapter.getViewTypeCount();
}

return (-1);
}

public boolean areAllItemsSelectable() {
return (false);
}

public boolean isEnabled(int position) {
return (getItemViewType(position) != TYPE_SECTION_HEADER);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
int sectionIndex = 0;

for (Section section : this.sections) {
if (position == 0) {
return (getHeaderView(section.caption, sectionIndex,
convertView, parent));
}

int size = section.adapter.getCount() + 1;

if (position <>
return (section.adapter.getView(position - 1, convertView,
parent));
}

position -= size;
sectionIndex++;
}

return (null);
}

@Override
public long getItemId(int position) {
return (position);
}

class Section {
String caption;
Adapter adapter;

Section(String caption, Adapter adapter) {
this.caption = caption;
this.adapter = adapter;
}
}
}

Selection.java


package com.commonsware.android.listview;

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class SectionedDemo extends ListActivity {
private static String[] items = { "US", "UK", "CANADA", "JAPAN", "SINGAPORE",
"INDIA", "CHINA" };

private static String[] Sect = { "GOOGLE", "FACEBOOK","DELL" };

private static String[] Doc = { "FRONT", "TOP","BACK" };

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);

adapter.addSection("step 1", new ArrayAdapter(this,
android.R.layout.simple_list_item_1, items));

adapter.addSection("Step 2", new ArrayAdapter(this,
android.R.layout.simple_list_item_1, Sect));

adapter.addSection("Step 3", new ArrayAdapter(this,
android.R.layout.simple_list_item_1, Doc));

setListAdapter(adapter);
}

SectionedAdapter adapter = new SectionedAdapter() {
protected View getHeaderView(String caption, int index,
View convertView, ViewGroup parent) {
TextView result = (TextView) convertView;

if (convertView == null) {
result = (TextView) getLayoutInflater().inflate(
R.layout.header, null);
}

result.setText(caption);

return (result);
}
};
}


And Now The output given below.






Posted by hoonihoon
2012. 11. 15. 15:53

참고 사이트 http://docs.oracle.com/javase/1.4.2/docs/api/

java.text
Class SimpleDateFormat

java.lang.Object
  extended byjava.text.Format
      extended byjava.text.DateFormat
          extended byjava.text.SimpleDateFormat
 
Date and Time Pattern Result
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
 

예제 코드 1 _ 시간 출력

 Date date = new Date();  //현재시간 구함

 SimpleDateFormat sf = new SimpleDateFormat("a hh:mm");
 String a = sf.format(date.getTime());
 System.out.println(a);

결과 : 오후 03:51

예제코드2 _ 년, 월, 일 출력

String d = date.getYear()+1900+"-"+(date.getMonth()+1)+"-"+date.getDate()+" "+date.getTime();
System.out.println(d);

2012-11-15
 
 
Posted by hoonihoon
2012. 11. 14. 17:41

메일에 read, unread 체크를 하고싶었는데,  mail를 받자마자 read 가 되는 현상이 발견되었다.

Javax API docs 에서 열심히 찾다가 API가 없는 것으로 봐서  코드문제는 아닐 거라 판단.

결과는 단순히 환경설정을 하면 처리 되는 것이 였다.

 

 

'2019년 이전 정리 > Email' 카테고리의 다른 글

Android Email 관련 스터디  (0) 2012.11.14
Android Email 계정 알아 내기  (0) 2012.11.14
android에서 mail 관련 jar 파일 추가하기  (0) 2012.11.12
IMAP 개념  (0) 2012.11.09
Posted by hoonihoon
2012. 11. 14. 15:17

POP3, IMAP, STMP 의 정의 부터 지금까지 작업 내용

 

 

첫번째로 pop3 로 받아온 data를 파싱하여 보여주는 UI,  첨부파일과 메일을 보여주는 UI.

순수개발자라서 디자인을 하기는 정말 어렵다. 하지만  나름 깔끔하게 되었다.

 

 

안드로이드 앱에서 보낸 파일이 첨부된 EMAIL 을 받은 모습니다. 

 

  

앞으로 해야 할것.

1. 메일 read, unread 여부 판단하여 image 교체 

2. 날짜 입력 받아 list item 에 날짜 보여주기.

3. 해당메일을 눌렀을 때 mail view 보여주기

4. mimtype 별 파일 첨부가 가능하도록 해야 한다.  -> image전송 완료.  *filename 이 null값으로 전송
  (intent를 사용하여 가져오도록하자. mimtype 구분없이 전체 파일을 pick intent 로 보여주는 방식 찾기 ) 

5. parsing 속도로 인해 메일 전체를 파싱하는 데  시간 소모가 상당하다.  다른 앱 비교해보고 구현방법을 생각하기.

6. DB, CP를 이용한 접근, AsyncQueryHandler 사용해보자

AsyncQueryHandler 를 developer.andoid.com 사이트에서 찾아보면... 

A helper class to help make handling asynchronous ContentResolver queries easier. 

query 동작은 별도의 쓰레드로 동작하도록 하는 것이 좋다고 하네요. 실제로 native code 에서는 많이 사용중 입니다.

 

 

 

Posted by hoonihoon
2012. 11. 14. 14:35

android:singleLine="true" : 한줄에 표시
android:ellipsize="none" : 한줄이 넘을 경우 '...' 표시하지 않음
android:ellipsize="start" : 한줄이 넘을 경우 '...' 을 문장 앞에 표시
android:ellipsize="middle" : 한줄이 넘을 경우 '...' 을 문장 가운데 표시
android:ellipsize="end" : 한줄이 넘을 경우 '...' 을 문장 끝에 표시

android:ellipsize="marquee" : text가 좌에서 우로 이동하는 효과

android:singleLine="true"
android:focusable="true" <-- 3개의 속성을 함께 지정해야함

그리고 소스에서 setSelected(true); 를 설정해야 함

'Android > 개발팁' 카테고리의 다른 글

Android 스크린 사이즈와 layout size 구하기  (0) 2012.11.28
ListView 에 제목줄 을 달아 보자  (0) 2012.11.15
EditText 글자 짤림 현상  (0) 2012.08.27
한글 처리 문제  (0) 2012.08.27
SoftKeyboard 생성, 삭제  (0) 2012.08.27
Posted by hoonihoon