안녕하세요.

라이브러리를 사용하지 않고 네비게이션 드로어를 사용하여 슬라이드 메뉴를 구현해보겠습니다.


먼저 libs 폴더에 android-support-v4.jar 폴더를 추가 합니다.


activity_slide_menu.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/dl_activity_main_drawer"

    android:layout_width="match_parent"

    android:layout_height="match_parent" >


    <FrameLayout

        android:id="@+id/fl_activity_main_container"

        android:layout_width="match_parent"

        android:layout_height="match_parent" >


        <Button

            android:id="@+id/btn"

            android:layout_width="match_parent"

            android:layout_height="40dp" />

    </FrameLayout>


    <ListView

        android:id="@+id/lv_activity_main_nav_list"

        android:layout_width="240dp"

        android:layout_height="match_parent"

        android:layout_gravity="start"

        android:background="#EDEDED"

        android:choiceMode="singleChoice"

        android:divider="@android:color/transparent"

        android:dividerHeight="0dp" />


</android.support.v4.widget.DrawerLayout>


SlideMenuActiviy.java



import android.app.Activity;

import android.graphics.Color;

import android.os.Bundle;

import android.support.v4.widget.DrawerLayout;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.FrameLayout;

import android.widget.ListView;

import android.widget.Toast;


/**

 * 네비게이션 드로어 적용

 * 

 * @author

 * @version

 * @since

 * @created 2015. 9. 24.

 */

public class SlideMenuActivity extends Activity {


    private final String[] navItems = {"Brown", "Cadet Blue", "Dark Olive Green", "Dark Orange", "Golden Rod"};


    private ListView lvNavList;


    private FrameLayout flContainer;


    private DrawerLayout dlDrawer;


    private Button btn;


    @Override

    public void onBackPressed() {

        if (dlDrawer.isDrawerOpen(lvNavList)) {

            dlDrawer.closeDrawer(lvNavList);

        } else {

            super.onBackPressed();

        }

    }


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_slide_menu);


        lvNavList = (ListView)findViewById(R.id.lv_activity_main_nav_list);

        flContainer = (FrameLayout)findViewById(R.id.fl_activity_main_container);

        btn = (Button)findViewById(R.id.btn);


        btn.setOnClickListener(new OnClickListener() {


            @Override

            public void onClick(View v) {

                Toast.makeText(getApplicationContext(), "open", Toast.LENGTH_SHORT).show();

                dlDrawer.openDrawer(lvNavList);

            }

        });


        dlDrawer = (DrawerLayout)findViewById(R.id.dl_activity_main_drawer);


        lvNavList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, navItems));

        lvNavList.setOnItemClickListener(new DrawerItemClickListener());

    }


    private class DrawerItemClickListener implements ListView.OnItemClickListener {


        @Override

        public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {

            switch (position) {

                case 0:

                    flContainer.setBackgroundColor(Color.parseColor("#A52A2A"));

                    break;

                case 1:

                    flContainer.setBackgroundColor(Color.parseColor("#5F9EA0"));

                    break;

                case 2:

                    flContainer.setBackgroundColor(Color.parseColor("#556B2F"));

                    break;

                case 3:

                    flContainer.setBackgroundColor(Color.parseColor("#FF8C00"));

                    break;

                case 4:

                    flContainer.setBackgroundColor(Color.parseColor("#DAA520"));

                    break;

            }

            dlDrawer.closeDrawer(lvNavList);


        }

    }


}



버튼 클릭 or 옆으로 슬라이드시 화면이 나오고 back key 눌렀을 경우 슬라이드 메뉴가 사라지는 부분까지 적용했습니다. 위와 같이 사용하면 별도로 슬라이드 메뉴 라이브러리를 적용 시키지 않고도 간단하게 슬라이드 메뉴를 사용할 수 있습니다.



결과화면




블로그 이미지

Heum's

IT 관련 지식 공유

//폰에 설정되어 있는 언어 값 추출

Locale locale = getResources().getConfiguration().locale;

String language = locale.getLanguage();


블로그 이미지

Heum's

IT 관련 지식 공유

이미지 url로 이미지를 다운받아 폴더에 저장하고 저장한 이미지를 갤러리를 통해 여는 방법에 대해 알아보겠습니다.


먼저 퍼미션 설정 부터 합니다.


AndroidManifest.xml

<!-- 인터넷 접속 -->

<uses-permission android:name="android.permission.INTERNET" />

    

<!-- 파일 생성,삭제 하기 위한 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />



자바 코드를 작성합니다.


MainActivity.java

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Locale;


import android.app.Activity;

import android.content.Intent;

import android.net.Uri;

import android.os.AsyncTask;

import android.os.Bundle;

import android.os.Environment;



public class MainActivity extends Activity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        String imgUrl = "http://img.naver.net/static/www/u/2013/0731/nmms_224940510.gif";

        new ImageDownload().execute(imgUrl);

    }


    /**

     * url 이미지 다운로드

     * 

     */

    private class ImageDownload extends AsyncTask<String, Void, Void> {


        /**

         * 파일명

         */

        private String fileName;


        /**

         * 저장할 폴더

         */

        private final String SAVE_FOLDER = "/save_folder";


        @Override

        protected Void doInBackground(String... params) {


            //다운로드 경로를 지정

            String savePath = Environment.getExternalStorageDirectory().toString() + SAVE_FOLDER;


            File dir = new File(savePath);

            //상위 디렉토리가 존재하지 않을 경우 생성

            if (!dir.exists()) {

                dir.mkdirs();

            }


            //파일 이름 :날짜_시간

            Date day = new Date();

            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.KOREA);

            fileName = String.valueOf(sdf.format(day));


            //웹 서버 쪽 파일이 있는 경로

            String fileUrl = params[0];


            //다운로드 폴더에 동일한 파일명이 존재하는지 확인

            if (new File(savePath + "/" + fileName).exists() == false) {

            } else {

            }


            String localPath = savePath + "/" + fileName + ".jpg";


            try {

                URL imgUrl = new URL(fileUrl);

                //서버와 접속하는 클라이언트 객체 생성

                HttpURLConnection conn = (HttpURLConnection)imgUrl.openConnection();

                int len = conn.getContentLength();

                byte[] tmpByte = new byte[len];

                //입력 스트림을 구한다

                InputStream is = conn.getInputStream();

                File file = new File(localPath);

                //파일 저장 스트림 생성

                FileOutputStream fos = new FileOutputStream(file);

                int read;

                //입력 스트림을 파일로 저장

                for (;;) {

                    read = is.read(tmpByte);

                    if (read <= 0) {

                        break;

                    }

                    fos.write(tmpByte, 0, read); //file 생성

                }

                is.close();

                fos.close();

                conn.disconnect();

            } catch (Exception e) {

                e.printStackTrace();

            }


            return null;

        }


        @Override

        protected void onPostExecute(Void result) {

            super.onPostExecute(result);


            //저장한 이미지 열기

            Intent i = new Intent(Intent.ACTION_VIEW);

            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            String targetDir = Environment.getExternalStorageDirectory().toString() + SAVE_FOLDER;

            File file = new File(targetDir + "/" + fileName + ".jpg");

            //type 지정 (이미지)

            i.setDataAndType(Uri.fromFile(file), "image/*");

            getApplicationContext().startActivity(i);

            //이미지 스캔해서 갤러리 업데이트

            sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));

        }

    }


}



결과화면


앱을 실행하면 폴더에 자동으로 저장되고 저장한 이미지를 갤러리에서 바로 열어줍니다.




블로그 이미지

Heum's

IT 관련 지식 공유