Форум программистов, компьютерный форум CyberForum.ru

Объединение двух приложений - Android

Войти
Регистрация
Восстановить пароль
 
rkcz00
0 / 0 / 0
Регистрация: 03.04.2015
Сообщений: 42
09.06.2015, 15:16     Объединение двух приложений #1
Здрасьте.

Сделал таки по урокам два отдельных приложения для установки обоев:
1. Отображает картинки в GridView
Java
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
package com.mycompany.myapp;
 
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
 
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
 
    AsyncTaskLoadFiles myAsyncTaskLoadFiles;
 
    public class AsyncTaskLoadFiles extends AsyncTask<Void, String, Void> {
 
        File targetDirector;
        ImageAdapter myTaskAdapter;
 
        public AsyncTaskLoadFiles(ImageAdapter adapter) {
            myTaskAdapter = adapter;
        }
 
        @Override
        protected void onPreExecute() {
            String ExternalStorageDirectoryPath = Environment
                .getExternalStorageDirectory().getAbsolutePath();
 
            String targetPath = ExternalStorageDirectoryPath + "/test/";
            targetDirector = new File(targetPath);
            myTaskAdapter.clear();
 
            super.onPreExecute();
        }
 
        @Override
        protected Void doInBackground(Void... params) {
 
            File[] files = targetDirector.listFiles();
            Arrays.sort(files);
            for (File file : files) {
                publishProgress(file.getAbsolutePath());
                if (isCancelled()) break;
            }
            return null;
        }
 
        @Override
        protected void onProgressUpdate(String... values) {
            myTaskAdapter.add(values[0]);
            super.onProgressUpdate(values);
        }
 
        @Override
        protected void onPostExecute(Void result) {
            myTaskAdapter.notifyDataSetChanged();
            super.onPostExecute(result);
        }
 
    }
 
    public class ImageAdapter extends BaseAdapter {
 
        private Context mContext;
        ArrayList<String> itemList = new ArrayList<String>();
 
        public ImageAdapter(Context c) {
            mContext = c;
        }
 
        void add(String path) {
            itemList.add(path);
        }
 
        void clear() {
            itemList.clear();
        }
 
        void remove(int index){
            itemList.remove(index);
        }
 
        @Override
        public int getCount() {
            return itemList.size();
        }
 
        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return itemList.get(position);
        }
 
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }
 
        //getView load bitmap ui thread
        /*
         @Override
         public View getView(int position, View convertView, ViewGroup parent) {
         ImageView imageView;
         if (convertView == null) { // if it's not recycled, initialize some
         // attributes
         imageView = new ImageView(mContext);
         imageView.setLayoutParams(new GridView.LayoutParams(220, 220));
         imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
         imageView.setPadding(8, 8, 8, 8);
         } else {
         imageView = (ImageView) convertView;
         }
 
         Bitmap bm = decodeSampledBitmapFromUri(itemList.get(position), 220,
         220);
 
         imageView.setImageBitmap(bm);
         return imageView;
         }
         */
 
        //getView load bitmap in AsyncTask
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
 
            ImageView imageView;
            if (convertView == null) { // if it's not recycled, initialize some
                // attributes
                imageView = new ImageView(mContext);
                imageView.setLayoutParams(new GridView.LayoutParams(220, 220));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(8, 8, 8, 8);
 
                convertView = imageView;
 
                holder = new ViewHolder();
                holder.image = imageView;
                holder.position = position;
                convertView.setTag(holder);
            } else {
                //imageView = (ImageView) convertView;
                holder = (ViewHolder) convertView.getTag();
                ((ImageView)convertView).setImageBitmap(null);
            }
 
            //Bitmap bm = decodeSampledBitmapFromUri(itemList.get(position), 220, 220);
            // Using an AsyncTask to load the slow images in a background thread
            new AsyncTask<ViewHolder, Void, Bitmap>() {
                private ViewHolder v;
 
                @Override
                protected Bitmap doInBackground(ViewHolder... params) {
                    v = params[0];
                    Bitmap bm = decodeSampledBitmapFromUri(itemList.get(position), 220, 220);
                    return bm;
                }
 
                @Override
                protected void onPostExecute(Bitmap result) {
                    super.onPostExecute(result);
                    //Not work for me!
                    /*
                     if (v.position == position) {
                     // If this item hasn't been recycled already, 
                     // show the image
                     v.image.setImageBitmap(result);
                     }
                     */
 
                    v.image.setImageBitmap(result);
 
                }
            }.execute(holder);
 
            //imageView.setImageBitmap(bm);
            //return imageView;
            return convertView;
        }
 
        public Bitmap decodeSampledBitmapFromUri(String path, int reqWidth,
                                                 int reqHeight) {
 
            Bitmap bm = null;
            // First decode with inJustDecodeBounds=true to check dimensions
            final BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
            BitmapFactory.decodeFile(path, options);
 
            // Calculate inSampleSize
            options.inSampleSize = calculateInSampleSize(options, reqWidth,
                                                         reqHeight);
 
            // Decode bitmap with inSampleSize set
            options.inJustDecodeBounds = false;
            bm = BitmapFactory.decodeFile(path, options);
 
            return bm;
        }
 
        public int calculateInSampleSize(
 
            BitmapFactory.Options options, int reqWidth, int reqHeight) {
            // Raw height and width of image
            final int height = options.outHeight;
            final int width = options.outWidth;
            int inSampleSize = 1;
 
            if (height > reqHeight || width > reqWidth) {
                if (width > height) {
                    inSampleSize = Math.round((float) height
                                              / (float) reqHeight);
                } else {
                    inSampleSize = Math.round((float) width / (float) reqWidth);
                }
            }
 
            return inSampleSize;
        }
 
        class ViewHolder {
            ImageView image;
            int position;
        }
 
    }
 
    ImageAdapter myImageAdapter;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        final GridView gridview = (GridView) findViewById(R.id.gridview);
        myImageAdapter = new ImageAdapter(this);
        gridview.setAdapter(myImageAdapter);
 
        
        myAsyncTaskLoadFiles = new AsyncTaskLoadFiles(myImageAdapter);
        myAsyncTaskLoadFiles.execute();
 
        }
}
Main
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical">
 
    
        
    <GridView
        android:id="@+id/gridview"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:columnWidth="220dp"
        android:numColumns="3"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:stretchMode="columnWidth"
        android:gravity="center"/>
 
</LinearLayout>
2. Это приложение непосредственно устанавливает картинки в качестве обоев
Java
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.app.WallpaperManager;
import android.content.Context;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
 
 
import java.io.IOException;
 
 
public class MainActivity extends FragmentActivity {
 
    ViewPager pager;
    PagerAdapter pagerAdapter;
 
    private int[] images = new int[]{R.drawable.space1, R.drawable.space2, R.drawable.space3,
            R.drawable.space4, R.drawable.space5, R.drawable.space6, R.drawable.space7,};
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        Button setWlpBtn = (Button) findViewById(R.id.setWlpBtn);
        setWlpBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
                try {
 
                    wallpaperManager.setResource(images[pager.getCurrentItem()]);
 
                    Context context = getApplicationContext();
                    CharSequence text = "Обо успешно установлены!";
                    int duration = Toast.LENGTH_SHORT;
                    Toast toast = Toast.makeText(context, text, duration);
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
 
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
 
 
    pager = (ViewPager) findViewById(R.id.viewPager);
 
    pagerAdapter = new MyFragmentPageAdapter(getSupportFragmentManager());
 
 
    pager.setAdapter(pagerAdapter);
 
    pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
 
 
        @Override
        public void onPageScrolled(int i, float v, int i2) {
        }
 
        @Override
        public void onPageSelected(int i) {
        }
 
        @Override
        public void onPageScrollStateChanged(int i) {
 
        }
 
    });
    }
 
    private class MyFragmentPageAdapter extends FragmentPagerAdapter {
 
            private int[] images = new int[] {R.drawable.space1, R.drawable.space2, R.drawable.space3,
                    R.drawable.space4, R.drawable.space5, R.drawable.space6, R.drawable.space7,6};
 
            private int imagesCount = images.length;
 
            public MyFragmentPageAdapter(FragmentManager fm) {
                super(fm);
            }
        @Override
        public Fragment getItem(int i) {
        return PageFragment.newInstance(images[i]);
        }
 
        @Override
        public int getCount() {
            return imagesCount;
        }
    }
    }
PageFragment

Java
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
32
33
34
35
36
37
38
39
40
41
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
 
public class PageFragment extends Fragment {
 
    static final String ARGUMENT_IMAGE_ID = "arg_image_id";
    int imageId;
 
    static Fragment newInstance(int image) {
 
        PageFragment pageFragment = new PageFragment();
        Bundle arguments =  new Bundle();
        arguments.putInt(ARGUMENT_IMAGE_ID, image);
        pageFragment.setArguments(arguments);
        return pageFragment;
 
    }
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        imageId = getArguments().getInt(ARGUMENT_IMAGE_ID);
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
 
        View view = inflater.inflate(R.layout.fragment, null);
 
        ImageView imageView = (ImageView) view.findViewById(R.id.spaceImage);
        imageView.setImageResource(imageId);
 
        return view;
 
    }
}
Main
XML
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
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
 
    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_above="@+id/setWlpBtn"
        android:layout_marginBottom="10dip">
        </android.support.v4.view.ViewPager>
 
    <Button
        android:id="@+id/setWlpBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Установить обои"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="50dp"/>
 
</RelativeLayout>
fragment

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
    <ImageView
        android:id="@+id/spaceImage"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center">
 
        </ImageView>>
 
</RelativeLayout>
В целом немного до меня не доходит.Я ,так понимаю , необходимо два слушателя здесь или нет?
Подскажите пожалуйста.
Пы.Сы. В разработке глубокий новичок,сразу не пинайте, к тому же все пишется с смартфона.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2015, 15:16     Объединение двух приложений
Посмотрите здесь:

Исходный код приложений Android
Android Архитектура приложений
О реализации приложений Android
Android Конструкторы приложений
Монетизация приложений Android
Android Объединение строк
Декомпилятор приложений Android
Приложение обои-объединение Android
Android Совмещение двух приложений
Android Создание приложений
Создание приложений в Eclipse Android
Android Совместимость приложений

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 01:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru