webview 14

[Android]스크롤 뷰 안에 웹뷰가 있을 경우 스크롤 뷰만 스크롤 되는 문제(Webview inside ScrollView scrolled only ScrollView)

스크롤뷰 안에 스크롤이 필요한 경우 NestedScrollView를 이용하여, 스크롤이 되게 할 수 있는데, 웹뷰의 경우는 웹페이지가 스크롤이 필요한 경우라 NestedScrollView로 해결 할 수 없다. 해당 문제를 해결하기 위해선, 웹뷰에서 발생하는 터치 이벤트를 다른 뷰에 뺏기지 않아야 원하는 결과를 얻을 수 있다. 먼저 웹뷰를 상속 받는 클래스를 하나 만든다. 상속 받은 웹뷰 클래스에 onTouchEvent 메소드를 Overriding 한다. public class RoadView extends WebView { @Override public boolean onTouchEvent(MotionEvent event) { requestDisallowInterceptTouchEvent(true); r..

Programming/Android 2017.07.28

[Android] 앱 캐시 제거(Webview 등)

오랜만에 글쓰네요.. 프로젝트가 안정화 단계에 접어들다보니 포스팅할만한 내용이 없었네요. 하이브리드 앱을 제작하다보면 앱캐시로 인해 변경된 화면이 표시가 안되는 경우가 종종 있었는데요. 앱캐시를 확실하게 날릴 수 있는 코드입니다. /** * 앱 캐시를 가차없이 지운다. */ public static void clearApplicationCache(Context context, File file) { File dir = null; if (file == null) { dir = context.getCacheDir(); } else { dir = file; } if (dir == null) return; File[] children = dir.listFiles(); try { for (int i = 0; i ..

Programming/Android 2015.04.27

[Android] 안드로이드 TextView 글자에 색깔 넣기. 부분적으로 색깔 넣기. html 스타일 적용.

Spannable 객체를 이용할 경우. 24와 37은 인덱스 값. 24~37 사이에 있는 글자만 변경된다. Spannable descriptionString = (Spannable) mDescriptionTextView.getText(); descriptionString.setSpan(new StyleSpan(Typeface.BOLD), 24, 37, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE); descriptionString.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.guide_message_highlight)), 24, 37, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE..

Programming/Android 2014.06.24

[Android] TextView, 글자에 외곽선(Border, outline) 넣기

안드로이드에서 외곽선을 넣기 위해선 TextView를 Customizing해야한다.(다른방법이 있을 수도..;) TextView를 상속받아서 뷰를 조금 수정해야하고, 편하게 사용하기 위해 attr을 선언해주면 된다. 먼저 TextView를 상속 받은 OutlineTextView를 만든다. public class OutlineTextView extends TextView { private boolean hasStroke = false; private float mStrokeWidth = 0.0f; private int mStrokeColor; public OutlineTextView(Context context) { super(context); } public OutlineTextView(Context c..

Programming/Android 2014.06.24

[Android] 안드로이드에서 httpPost multiparts로 전송하기(멀티파트, 멀티파츠)

안드로이드에서는 httpClient의 버전이 낮아 multiparts를 지원하지 않는다. 보내고 싶다면 httpConnection을 열고, buffer를 통해서 전송해야 하는데, 만들기가 여간 귀찮은 것이 아니다. apache에서 httpComponents를 제공하고 있는데, 해당 라이브러리를 사용하면, 별다른 구현을 하지 않더라도 multiparts로 전송할 수 있게 된다. 물론 약 1메가 정도의...라이브러리가 추가되긴 하지만.. 아파치 사이트로 이동하여 httpClient 최신버전을 다운받는다.(전 4.3.X 버전 사용중) Download Page(Click) 당연히 jar 파일이 필요하기 때문에 binary를 클릭해서 받아준다. 다운후 압축을 해제하게 되면, examples, lib, tutori..

Programming/Android 2014.06.24

[Android, Hybrid]openFileChooser 킷캣에서 동작하지 않는 문제( openFileChooser Kitkat bug )

[2014.10.31] openFileChooser가 문제군요...ㅎ 코멘트 잘 읽어 보았습니다. 킷캣에서 파일업로드 버그는...웹적인 요소로 해결할 수 있는 방안은 없습니다. 그래서 이런방법도 있다는 것을 알려드리기 위해서 글을 쓴건데 더욱 혼란스럽게 해드린 것 같네요. 제가 아래 글에 빨간색으로 표시를 해뒀는데...이 방법은 파일에 대한 정보를 네이티브 단에 저장해 놓고 전송에 대한 이벤트를 받으면 NATIVE 단에서 서버로 전송하게 됩니다. 서버로 전송하는 부분은 각자 프로젝트에 맞게...직접 구현하셔야되구요. 멀티파츠로 전송하신다면 제 블로그 찾아보시면 네이티브에서 멀티파츠로 전송하는 방법이라고 있습니다. 그부분 참고하시면 됩니다. 아래 발췌된 부분은 참고용이지 복사 붙여넣기를 한다고해서 동작하는..

[Android, Hybrid] JavascriptInterface 사용법.

아이폰의 경우 Native와 Web간의 통신을 위해서 scheme를 이용하지만 안드로이드에서는 JavascriptInterface를 이용하여 더욱 편하게 데이터를 주고 받을 수 있다. 예제로 간단한 Toast를 보여주는 인터페이스를 만들어 보겠다. 먼저 웹뷰에 추가 시킬 JavascriptInterface 클래스를 만든다. public class WebViewInterface { private WebView mAppView; private Activity mContext; /** * 생성자. * @param activity : context * @param view : 적용될 웹뷰 */ public WebViewInterface(Activity activity, WebView view) { mAppVie..