달력

1

« 2021/1 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  
  •  
2013. 3. 25. 20:12

Android 의 WebView pinch zoom 없애기 Android2013. 3. 25. 20:12

까먹을까봐 올린다;;

웹뷰의 onTouchEvent 를 Overriding 해서 처리한다.

@Override
 public boolean onTouchEvent(MotionEvent event) {

if (event.getPointerCount() > 1) {
   getSettings().setBuiltInZoomControls(true);
   getSettings().setSupportZoom(true);
  } else {
   getSettings().setBuiltInZoomControls(false);
   getSettings().setSupportZoom(false);
 }
  return super.onTouchEvent(event);
 }

Posted by maruldy

댓글을 달아 주세요

strings.xml 에 html tag 를 넣어서 리소스를 작성하다 보면, &lt &gt 등을 이용해서 처리하던 <. > 등 때문에

가독성이 심각하게 떨어져 보일 수 있다.

 

이를 위해서 CDATA 를 사용하면 가독성을 확보할 수 있다.


<string name="string_hello">&lt;/font&gt;&lt;font color="#535353"&gt;안녕하세요&lt;/font&gt;</string>

 

로 사용되던 작성법은 아래와 같은 방법으로 작성될 수도 있다.

 

<string name="string_hello"><![CDATA[

<font color="#535353">안녕하세요 %1$s</font>

]]></string>

 

들여쓰기는 팀의 convention 에 맞춰도 되고 딱히 없다면 본인이 보기 편한대로 하면 될 것이다.

 

Java 에서 위 resource 를 사용하는 법은 아래와 같다.

 

String string = getResources().getString(R.string.string_hello, "대영님"); 

helloTextView.setText(Html.fromHtml(string));

Posted by maruldy

댓글을 달아 주세요

2012. 9. 25. 11:32

Android WebView 속도 향상 Android2012. 9. 25. 11:32

LOAD_NO_CACHE 나 기타 많이 알려진 다른 방법으로도 속도 개선이 안된다면

webview.getSettings().setRenderPriority(RenderPriority.HIGH);

를 사용해봅시다.

Posted by maruldy

댓글을 달아 주세요

일전에, 공개되지 않은 WebView 의 Method 인 setEmbeddedTitleBar() 메소드를 사용하는 법을 알아다.

 

두가지 정도 내용을 더 추가하자면,

1. 화면 하단에 (-/+) 같은 줌 버튼이 생기는데, 이게 미관상 좋지 않다.

이 부분을 없애려면 Webiew 를 상속받아서 onTouchEvent 를 Overriding 하면 된다.

@Override
 public boolean onTouchEvent(MotionEvent motionEvent) {
  final int eventAction = motionEvent.getAction();
  if (eventAction == MotionEvent.ACTION_DOWN ||
   eventAction == MotionEvent.ACTION_POINTER_DOWN ||
   eventAction == MotionEvent.ACTION_POINTER_1_DOWN ||
   eventAction == MotionEvent.ACTION_POINTER_2_DOWN ||
   eventAction == MotionEvent.ACTION_POINTER_3_DOWN ||
   eventAction == MotionEvent.ACTION_MOVE) {
   if (motionEvent.getPointerCount() > 1) {
    getSettings().setBuiltInZoomControls(true);
    getSettings().setSupportZoom(true);
   } else {
    getSettings().setBuiltInZoomControls(false);
    getSettings().setSupportZoom(false);
   }
  }
  return super.onTouchEvent(motionEvent);
 }

 

2. TitleBar 를 포함한 WebView 의 영역과 별개의 영역에 Layout 을 구성하면, 해당 WebView 의 Zoom 등에 영향을 받지 않는다

 

이정도를 적용 시키니 한층 화면 보기가 좋아졌다.

 

Posted by maruldy

댓글을 달아 주세요

2012. 1. 17. 18:40

ScrollView 와 ListView 같이 쓰기. Android2012. 1. 17. 18:40


일반적으로 ListView 는 그 안에 들어가는 item 들의 갯수에 따라 크기가 결정된다.
그런데 ScrollView 가 그려지는 그 시점에 ListView 의 길이를 정확히 알수가 없다.
예를들면 아래와 같이 두개를 같이 쓰게 될 때, ScrollView 가 ListView 를 다 표현하지 못한다.

<ScrollView  .... attrs..>
    <LinearLayout ...attrs..>
        <기타등등 >
        <기타등등 >
        <ListView ... attrs />
    .....
</ ..... >


하지만 ListView 의 height 를 ListView 안에 Item 갯수 * 각 Item 높이 만큼 다시 그려준다면

ListView 안에 Scroll 이 들어가지 않고 ListView 자체가 늘어나므로,

ScrollView 안에 ListView 를 다 보여줄 수 있으며 이런 어려움을 매우 훌륭하게 극복할 수 있다.

Posted by maruldy

댓글을 달아 주세요

처음엔 처음엔 Adapter 를 만들어서 CheckBox 에 click listener 를 달아놓는 방식으로 접근 했는데

deleteItemCheckBox.setChecked(((ListView)parent).isItemChecked(position));
deleteItemCheckBox.setFocusable(false);
deleteItemCheckBox.setClickable(false);

를 이용해서 CheckBox 의 Checked 여부를 ListView 에서 관리하도록 처리 하니까 완전히 편하다.

단점(이라고불려야 하는지 맞나?)은, CheckBox 에 click listener 를 달았을 때에는
ListView 의 item 전 영역이 아닌, 정확히 CheckBox 를 클릭했을 때 Check 시키는 이벤트가 발생한 반면에,

ListView 가 Checked 여부를 관리하게 되었을 때에는 item 어느 영역을 클릭해도 CheckBox 가 클릭된다.
Posted by maruldy

댓글을 달아 주세요


TextView 나 상위 레이아웃에서 gravity, layout_gravity 등등 맞춰봐도 안됐었는데..

TextView 에는 자동으로 Padding 값이 들어간다.

 

방법 1.
TextView 의 애트리뷰트중 하나인 android:includeFontPadding 값을 false 로 주면 이걸 해소시킬 수 있다.

 

방법 2.

1번으로 안될때도 있는데, padding(이었나 margin 이었나 가물가물...) 값을 - 로 주면 해결이 됐었던 것 같음.

Posted by maruldy

댓글을 달아 주세요