본문 바로가기
728x90

프로그래밍74

[Android] 화면해상도 구하는 방법 (DPI) 기기별로 해상도가 다르기 때문에, 화면 비율과 같이 크기가 변하는 View를 만들기 위해선 layout_weight를 써야한다. 하지만 코드에선 이를 쓰기 힘들기 때문에, 기기의DPI를 구한 후 그 값을 이용해 크기 조절을 한다. //* 방법 1 Display dis=((WindowManager)getSystemService(Window_Service)).getDefaultDisplay(); DisplayMetrics metrix=new DisplayMetrics(); dis.getMetrics(metrix); //* 방법 2 DisplayMetrics metrix=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrix); 2019. 9. 29.
[Android] ValueAnimator로 애니메이션 제작 int값의 변화로 애니메이션 효과 만듬 ValueAnimator anim=ValueAnimator.onInt(0,100); //* 0,100 은 경로를 나타냄. int... 이므로 여러 int값 전달 가능 anim.setDuration(1000); anim.setInterpolator(new LinearInterpolator()); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){ public void onAnimationUpdate(ValueAnimator animation){ int i=(int)animation.getAnimatedValue(); } }); anim.start(); 2019. 9. 29.
[Android] 버튼이 눌리는 효과 만들기 Button.setOnTouchListener(new OnTouchListener(){ public boolean onTouch(View v, MotionEvent event){ if(event.getAction()==MotionEvent.ACTION_DOWN){ v.setPadding(10,10,10,10); v.setAlpha(0.55f); }else if(event.getAction()==MotionEvent.ACTION_UP){ V.setPadding(0,0,0,0); v.setAlpha(1.0f); //* 여기에 버튼 기능 넣으면 됨 } } }); 2019. 9. 29.
[Android] 상단바(Status bar) 색 변경하기 API 21 이상부터 적용 가능 Window window =getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); if(Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP) window.setStatusBarColor(ContextCompat.getColor(this, R.color.colorAccent)); 위 방식으로 Java 코드에서 색 변경이 가능하고, styles.xml(v.21) 파일 내부에 android:statusBar.. 2019. 9. 29.
[Android] Java 코드에서 dp,sp 사용법 LinearLayout.LayoutParams params=new LinearLayout.LayoutParams((int)getResources().getDimension(R.dimen.x),(int)getResources().getDimension(R.dimen,y)); /*괄호 내부는 코드로 dp,sp등을 받아오기 위한 것*/ params.setMargin(0,0,0,0); view.setLayoutParams(params); //위 두 줄짜리 코드로 margin 설정가능 2019. 9. 29.
[Android] 커스텀 다이얼로그 AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); LayoutInflater inflater=getLayoutInflater(); View view=inflater.inflate(R.layout./*주소*/, null); builder.setView(view); /*negative, positive, message, title등 설정 후*/ builder.create().show(); 2019. 9. 29.
[Android] 커스텀뷰 디자인을 XML로 하는법(레이아웃) 커스텀뷰 클래스의 constructor에서 LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.Layout_Inflater_Service); View view=inflater.inflate(R.layout./*주소*/,this); 이렇게 하면 자동으로 인식 2019. 9. 29.
[Android] 간단한 커스텀 Notification Notification 생성까지는 동일 RemoteViews view=new RemoteViews(MainActivity.this.getPackageName(),R.layout./*띄울 레이아웃 주소*/); view.setImageViewResource(/*이미지 주소*/); view.setTextViewText(/*text*/); Notification noti=new Notification.Builder(getApplicationCOntext).setContent(view).build(); manager.notify(1,noti); 2019. 9. 29.
[Android] Notification 상태바, 커스텀 NotificationManager NM= getSystemService(Context.Notification_Service); Notification.Builder builder=new Notification.Builder(MainActivity.this); builder.setSmallIcon(/*icon(R)*/); builder.setTicker(/*text*/); builder.setWhen(/*timing*/); Notification noti=builder.build(); NM.notify(1,noti); 2019. 9. 29.
[React Native] createBottomTabNavigator의 header 없애는 방법 아래 코드처럼 stack의 Index 끝에 navigationOption를 넣고 header:null을 입력해주면 header가 두개가 생기는 일을 막을 수 있다. const RootStack = createStackNavigator({ Index:{ screen:createBottomTabNavigator({ Home:createStackNavigator({ Home:{ screen:WordbookScreen, }, ReviseWordbook, WordPage, ReviseWord, AddNewFolder, AddNewWord, TestScreen, TestScoreScreen, WebScreen, InstantSearchScreen, SettingsScreen, UpdateListScreen, }) .. 2019. 9. 29.
[React Native] 간단한 팝업창을 띄우는 방법 먼저 아래와 같이 Alert를 import해오고, import { Alert } from 'react-native'; 아래와 같이 Alert.alert를 사용해 경고 문구를 띄워준다. Alert.alert( '앗!', '단어장을 전부 다 지우면 안돼요!', [ {text: 'OK', onPress: () => console.log('OK Pressed') }, ] ); 2019. 9. 29.
[React Native] Android 뒤로가기 버튼을 다루는 방법 먼저 아래와 같이 BackHandler 를 import 해온다. import { BackHandler } from 'react-native'; 다음으로 뒤로가기 버튼을 다루고자 하는 뷰의 Constructor에 아래와 같은 코드 추가. this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress); 또한 컴포넌트 코드 내에서 위에서 선언한 handleBackPress() 를 구현하고, return false면 기존 뒤로가기 명령을 그대로 보내고, return true를 하면 기존 뒤로가기 명령을 무시하게 된다(뒤로가기 버튼이 작동하지 않게 된다). handleBackPress(){ console.log(".. 2019. 9. 29.
[React Native] 뒤로가기 버튼 두번 눌러서 앱 종료하기 http://webinformation.tistory.com/103 참고 2019. 9. 29.
[React Native] Navigation의 header사용방법 https://junyoru.tistory.com/51 에서 설명한 createStackNavigator에서, header=null로 하지 않고 사용하고자 할 때에 참고용으로 https://reactnavigation.org/docs/en/stack-navigator.html props는 이 링크에서 확인할 수 있다. 아래처럼 static navigationOptions를 통해 각 컴포넌트에서 헤더에 어떤 정보를 가지고 있게 할 수 있는지 정할 수 있다. 기본적으로 headerLeft, title, headerRight, headerStyle 등등이 있다. export default class Home extends Component { static navigationOptions ={ title:{ap.. 2019. 9. 29.
[React Native] array를 alphabetically 배열하는 방법 users.sort(function(a, b){ if(a.firstname b.firstname) return 1; return 0; }) 위 코드 응용 2019. 9. 29.
[React Native] Object를 storage에 저장하는 방법 https://stackoverflow.com/questions/45541727/how-can-i-save-object-in-mobille-storage-using-react-native 참고 2019. 9. 29.
[React Native] mobX를 사용한 state management npm install mobx --save npm install mobx-react --save 위 두 코드로 mobx를 설치한다. 설치가 끝난 후엔 프로젝트 폴더의 .babelrc를 "presets": [ ["react-native"] ], "plugins": [ ["@babel/plugin-proposal-decorators", { "legacy": true }], ["@babel/plugin-transform-runtime", { "helpers": true, "polyfill": false, "regenerator": false }] ] 위처럼 플러그인을 적용(preset도 대괄호를 두번 적용해야 작동하는듯) 다음으로 package.json에서는 아래처럼 adevDependecies 내에 아래와 .. 2019. 9. 29.
[React Native] HTML에서 parsing(parse)해오는 방법 fetch("https://stackoverflow.com/questions/38343951/how-do-i-parse-an-html-file-in-react-native") .then((response) => response.text()) .then((text)=>{ console.log(text) }) 위처럼 fetch(url)을 하면 promise로 response를 준다. 여기서 response.text()를 하면 아래와 같이 HTML을 받아올 수 있다. javascript - How do I parse an HTML file in React Native? - Stack Overflow StackExchange.init({"locale":"en","serverTime":1532482651,"rou.. 2019. 9. 29.
728x90