Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Вывод изображения после нажатия кнопки

Можно ли вывести изображение на главный layout, после нажатия кнопки, которая расположена на нём?

По нажатию первой кнопки должно появиться некое image1, а по нажатию второй - image2 вместе image 1. Нужно создавать разные layout или можно на одном вызывать только фрагменты с этими изображениями?
Далее код main.xml
Кликните здесь для просмотра всего текста

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:weightSum="1">
    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
 
        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="По заданию" />
 
        <Button
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Барсик" />
 
        <Button
            android:id="@+id/button3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Мурзик" />
 
    </LinearLayout>
 
</LinearLayout>


И код mainactivity.java :
Кликните здесь для просмотра всего текста
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
package ru.startandroid.myapplication;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
 
 
public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        Fragment frag2 = new Fragment2();
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.add(R.id.fragment2, frag2);
        ft.commit();
    };
 
    public void sendImage (View view){
 
    }
}
Ответ: imageview.setImageResource(R.drawable.batman);
Вопрос: Вывод изображений и текста из БД

вопрос знатокам :в приложении из базы данных выводится текст,среди этого текста есть картинки,хранящиеся так же в бд.сам вопрос в том как организовать такой вывод?

пример:
текст
текст
картинка
текст
картинка
Ответ: А какая структура, понятия не имею, что у тебя там. Ну навскидку, таблица с фото в байтах, таблица с текстом, таблица соответствия, ну можно аля граф сделать. Типо вынимая текст с неким id, лезешь в эту таблицу по этому id и вынимаешь id и тип данных, который надо вытащить следующим. Шаг дальше, делаешь связанные таблицы и вынимаешь одним запросом. Есть ещё пара вариантов и пара шагов дальше. Вслепую нету смысла шибко сильно расписывать.
Вопрос: Массив ссылок на изображения из ресурсов

Подскажите как сформировать массив ссылок на изображения из ресурсов проекта.
Необходимо для чтения изображения схем и дальнейшего их вывода в ListView.
Ответ: Задачи 1 и 2 решены. Момент по формированию файлового хранилища чертежей пока не рассматривал т.к. задача тривиальная(скопировал, сформировал масивы и алга).
Задача 2 решена с помощью примера , передалал для ListView.
Класс для формирования ListView:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class AndroidGridLayoutActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);
 
        ListView myList = (ListView)findViewById(R.id.lvImages);
        myList.setAdapter(new ImageAdapter(this));
        myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v,
                                    int position, long id) {
 
                // Sending image id to FullScreenActivity
                Intent i = new Intent(getApplicationContext(), FullImageActivity.class); //запускаем активность которая //грузит полное изображение
                // passing array index
                i.putExtra("id", position);
                startActivity(i);
            }
        });
    }
}
Задача 3 вывод полноценного изображения, в этой активности использую класс какого то индуса TouchImageView который позволяет масштабировать изображение рассматривать его, но блин эта зараза естественно загибается Out of Memory если скормить ей jpg 300kB м/б и разрешением 1250*1500.


Вы правы масштабируемость критична.

Добавлено через 50 минут
Спасибо за наводку на PhotoView это то что доктор прописал.
Протестил чертежи читает достойно без потери качества нет необходимости велосипед изобретать)))
Ложка дегтя, попытался скормить jpg 5 mb 5700 на 2900 PhotoView загнулся) хорошо что мне это не нужно.
Доделаю обязательно вернусь к этому вопросу, как все же работает стандартная галерея или это фальш и она выводить и масштабирует не реальные фотки с кучамегапиксельной камеры а лишь их образ?
Вопрос: Загрузка изображений на сервер

Здравствуйте. Пытаюсь загрузить изображение на свой сервер в интернете. Нашел вот такой пример:
Код Java(TM) 2 Platform Standard Edition 5.0
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
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
 
public class UploadAudioDemo extends Activity {
 
    private static final int SELECT_AUDIO = 2;
    String selectedPath = "";
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        openGalleryAudio();
    }
 
    public void openGalleryAudio(){
 
    Intent intent = new Intent();
        intent.setType("audio/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,"Select Audio "), SELECT_AUDIO);
   }
 
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
 
        if (resultCode == RESULT_OK) {
 
            if (requestCode == SELECT_AUDIO)
            {
                System.out.println("SELECT_AUDIO");
                Uri selectedImageUri = data.getData();
                selectedPath = getPath(selectedImageUri);
                System.out.println("SELECT_AUDIO Path : " + selectedPath);
                doFileUpload();
            }
 
        }
    }
 
    public String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
 
    private void doFileUpload(){
        HttpURLConnection conn = null;
        DataOutputStream dos = null;
        DataInputStream inStream = null;
        String lineEnd = "rn";
        String twoHyphens = "--";
        String boundary =  "*****";
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1*1024*1024;
        String responseFromServer = "";
        String urlString = "http://your_website.com/upload_audio_test/upload_audio.php";
        try
        {
         //------------------ CLIENT REQUEST
        FileInputStream fileInputStream = new FileInputStream(new File(selectedPath) );
         // open a URL connection to the Servlet
         URL url = new URL(urlString);
         // Open a HTTP connection to the URL
         conn = (HttpURLConnection) url.openConnection();
         // Allow Inputs
         conn.setDoInput(true);
         // Allow Outputs
         conn.setDoOutput(true);
         // Don't use a cached copy.
         conn.setUseCaches(false);
         // Use a post method.
         conn.setRequestMethod("POST");
         conn.setRequestProperty("Connection", "Keep-Alive");
         conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
         dos = new DataOutputStream( conn.getOutputStream() );
         dos.writeBytes(twoHyphens + boundary + lineEnd);
         dos.writeBytes("Content-Disposition: form-data; name="uploadedfile";filename="" + selectedPath + """ + lineEnd);
         dos.writeBytes(lineEnd);
         // create a buffer of maximum size
         bytesAvailable = fileInputStream.available();
         bufferSize = Math.min(bytesAvailable, maxBufferSize);
         buffer = new byte[bufferSize];
         // read file and write it into form...
         bytesRead = fileInputStream.read(buffer, 0, bufferSize);
         while (bytesRead > 0)
         {
          dos.write(buffer, 0, bufferSize);
          bytesAvailable = fileInputStream.available();
          bufferSize = Math.min(bytesAvailable, maxBufferSize);
          bytesRead = fileInputStream.read(buffer, 0, bufferSize);
         }
         // send multipart form data necesssary after file data...
         dos.writeBytes(lineEnd);
         dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
         // close streams
         Log.e("Debug","File is written");
         fileInputStream.close();
         dos.flush();
         dos.close();
        }
        catch (MalformedURLException ex)
        {
             Log.e("Debug", "error: " + ex.getMessage(), ex);
        }
        catch (IOException ioe)
        {
             Log.e("Debug", "error: " + ioe.getMessage(), ioe);
        }
        //------------------ read the SERVER RESPONSE
        try {
              inStream = new DataInputStream ( conn.getInputStream() );
              String str;
 
              while (( str = inStream.readLine()) != null)
              {
                   Log.e("Debug","Server Response "+str);
              }
              inStream.close();
 
        }
        catch (IOException ioex){
             Log.e("Debug", "error: " + ioex.getMessage(), ioex);
        }
      }
}
Далее вместо строчки:
Код Java(TM) 2 Platform Standard Edition 5.0
1
upLoadServerUri = "http://192.168.0.15/UploadToServer.php";
Вставляю свою строчку:
Код Java(TM) 2 Platform Standard Edition 5.0
1
upLoadServerUri = "http://cityquest.bl.ee/upload_image.php";
В upload_image.php находится:
Код PHP
1
2
3
4
5
6
7
8
9
10
11
< ?php
  
   $file_path = "uploads/";
     
   $file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
   if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
       echo "success";
   } else{
       echo "fail";
   }
? >
После запуска приложения у меня вроде бы успешно все загружается, но папка пустая.
1. Может ли быть, что загрузка не происходит из-за наличия на сервере логина и пароля? Я не могу понять, где нужно открыть права доступа на запись на этот сервер.
2. Возможно кто-то сталкивался с загрузкой изображений на хостинг изображений? Если можно, то подскажите. Подходит любая загрузка изображения в Интернет, на какой угодно сервер.

Хостинг регистрировал тут:
Ответ: YuraAAA, Пользуюсь первым примером, всё прекрасно. Но если вам не трудно, не могли бы описать переменную baos из строки

Код Java(TM) 2 Platform Standard Edition 5.0
1
multiPart.addPart("uploadedfile", new ByteArrayBody(baos.toByteArray(), "logo.png"));
Я просто не могу понять Uri или Bitmap в Array надо переводить?


Сейчас перемещаю его в AsyncTask
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
                    class RequestTask extends AsyncTask<String, String, String> {
 
        @Override
        protected String doInBackground(String... params) {
            try {
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost(params[0]);
                MultipartEntity multiPart = new MultipartEntity();
                multiPart.addPart("ad_name", new StringBody(ad_name2));
                multiPart.addPart("new", new StringBody(new2));
                multiPart.addPart("to_what", new StringBody(to_what2));
                multiPart.addPart("uploadedfile", new ByteArrayBody(galleryPic.toByteArray(), "logo.png"));
                client.execute(post);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
Добавлено через 2 часа 14 минут
В общем мой больной мозг сотворил такую фигню:

Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ByteArrayOutputStream bayts = new ByteArrayOutputStream();
                bitmapResized.compress(Bitmap.CompressFormat.JPEG, 90, bayts);
                byte[] bayts2 = bayts.toByteArray();
                //создаем запрос на сервер
                DefaultHttpClient hc = new DefaultHttpClient();
                ResponseHandler<String> res = new BasicResponseHandler();
                //он у нас будет посылать post запрос
                HttpPost postMethod = new HttpPost("http://autostop.net76.net/login.php");
                //будем передавать 4 параметра
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                //передаем параметры из наших текстбоксов
                nameValuePairs.add(new BasicNameValuePair("ad_name", ad_name2));
                nameValuePairs.add(new BasicNameValuePair("new", new2));
                nameValuePairs.add(new BasicNameValuePair("to_what", to_what2));
                //Передаем изображение
                nameValuePairs.add((NameValuePair) new ByteArrayBody(bayts2, "uploadedfile"));
                //собераем их вместе и посылаем на сервер
                postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                //получаем ответ от сервера
                String response = hc.execute(postMethod, res);
При нажатий на кнопку отправить ничего не происходит. А влогах во вкладке инфо появляется вот это
I/System.out﹕ Exp=java.lang.NullPointerException

Кликните здесь для просмотра всего текста
32586-32659/com.ww4u.barter I/System.out﹕ Exp=java.lang.NullPointerException
09-17 00:32:08.515 105-291/? I/BufferQueue﹕ [unnamed-105-1228] BufferQueue
09-17 00:32:08.515 105-291/? I/BufferQueue﹕ [unnamed-105-1228] consumerConnect
09-17 00:32:08.515 105-291/? I/BufferQueue﹕ [unnamed-105-1228] setSynchronousMode: enabled=1
09-17 00:32:08.515 105-291/? I/BufferQueue﹕ [unnamed-105-1228] setDefaultBufferSize: w=1, h=1
09-17 00:32:08.525 105-291/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] setDefaultBufferSize: w=456, h=144
09-17 00:32:08.528 105-105/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] connect: api=1
09-17 00:32:08.529 105-105/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] setSynchronousMode: enabled=1
09-17 00:32:08.529 105-15190/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] setSynchronousMode: enabled=1
09-17 00:32:08.532 105-15190/? I/GraphicBuffer﹕ allocate buffer (w:480 h:144 f:5) err(0)
09-17 00:32:08.533 105-15190/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] createGraphicBuffer before(NULL) after(0x42a6c658, handle=0x42a6bde0, w=456, h=144, f=5)
09-17 00:32:08.556 105-18325/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] disconnect: api=1
09-17 00:32:08.556 105-18325/? I/SurfaceTexture﹕ [com.ww4u.barter/com.ww4u.barter.add] [virtual void android::SurfaceTexture::onBuffersReleased()] mCurrentTexture:-1, mCurrentBuf:0x0
09-17 00:32:08.556 105-18325/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] getReleasedBuffers: returning mask 0xffffffff
09-17 00:32:08.557 105-696/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] connect: api=2
09-17 00:32:08.557 105-696/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] setSynchronousMode: enabled=1
09-17 00:32:08.559 105-105/? I/GraphicBuffer﹕ allocate buffer (w:480 h:144 f:1) err(0)
09-17 00:32:08.559 105-105/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] createGraphicBuffer before(NULL) after(0x42a6c658, handle=0x42a6ccb8, w=456, h=144, f=1)
09-17 00:32:08.569 105-696/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] disconnect: api=2
09-17 00:32:08.575 105-696/? I/SurfaceTexture﹕ [com.ww4u.barter/com.ww4u.barter.add] [virtual void android::SurfaceTexture::onBuffersReleased()] mCurrentTexture:0, mCurrentBuf:0x42a6c658
09-17 00:32:08.576 105-696/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] getReleasedBuffers: returning mask 0xffffffff
09-17 00:32:08.582 372-402/? I/WindowManager﹕ Gaining focus: Window{4248d8e8 com.ww4u.barter/com.ww4u.barter.add paused=false}
09-17 00:32:08.582 372-402/? I/WindowManager﹕ Losing focus: Window{41baab20 com.ww4u.barter/com.ww4u.barter.add paused=false}
09-17 00:32:08.594 372-3668/? W/InputMethodManagerService﹕ Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@41b9eb68 attribute=null
09-17 00:32:08.644 131-131/? W/ADB_SERVICES﹕ create_local_service_socket() name=shell:cat /proc/32586/stat
09-17 00:32:08.646 903-903/? W/ADB_SERVICES﹕ adb: unable to open /proc/903/oom_adj
09-17 00:32:08.685 131-131/? W/ADB_SERVICES﹕ create_local_service_socket() name=shell:cat /proc/stat
09-17 00:32:08.686 904-904/? W/ADB_SERVICES﹕ adb: unable to open /proc/904/oom_adj
09-17 00:32:08.804 105-291/? I/SurfaceFlinger﹕ [SurfaceFlinger] frames:21, duration:1.011000, fps:20.768837
09-17 00:32:08.851 105-291/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] consumerDisconnect
09-17 00:32:08.851 105-291/? I/BufferQueue﹕ [com.ww4u.barter/com.ww4u.barter.add] ~BufferQueue


Добавлено через 2 минуты
если 16 строку закомментировать, то все работает нормально
Вопрос: Программная расстановка большого количества кнопок

Здравствуйте, переношу своё сетевое приложение на java "Морской бой" и столкнулся с небольшой проблемой, я совсем не понял, как можно программно расставлять кнопки, прошу помощи у более умных людей .
А вся проблема в том, что в десктопной версии я полностью сам расставляю кнопки, в коде сама вычисляется позиция, куда нужно поставить кнопку, а вот как каким образом расставить элементы на андройде я не знаю
+ даже если есть какой-то способ расставить точно по координатам - то теряется поддержка разных разрешений.
Вот Java код, который я использую в десктоп версии, помогите перенести пожалуйста (или хотя-бы просто задайте направление куда копать и что изучать)
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
 private void paintCells(int xLoc, int yLoc, int xSiz, int ySiz, boolean rival){
        int xLocM = xLoc;
        int defY = yLoc;
        byte i = 0;
        while (i < 100){
            int x = i / 10; //это находит первую цифру двухзначного числа (прим из числа 82 получается 8)
            int y = i - (Math.round(i/10)*10); //это находит вторую цифру двухзначного числа (прим из числа 82 получается 2)
            if (!rival) {
                MyCells cell = new MyCells(); //новый объект 
                myCellsList[x][y] = cell;        // записываем его в массив
                cell.x = (byte)  x;                 //записываем в ячейку её координаты
                cell.y = (byte)  y;
                cell.index = i;                       
                cell.setLocation(xLocM, yLoc); //ставим кнопку на координаты xLocM, yLoc
                cell.setSize(xSiz, ySiz);          // ставим заданный размер в пикселях
                cell.setBorder(null);               // убираю обводку
                add(cell);                             // добавляю на панель
            }
            if (rival){
                RivalCells cell = new RivalCells();  //точно такой-же код, но записываем ссылки на ячейки в другой массив
                rivalCellsList[x][y] = cell;
                cell.x = (byte)  x;
                cell.y = (byte)  y;
                cell.index = i;
                cell.setLocation(xLocM, yLoc);
                cell.setSize(xSiz, ySiz);
                cell.setBorder(null);
                add(cell);
            }
            i++;
            if (xGrid < 9){                                            //если ячейка по вертикали не 9 (с 0), то добавляем к x координате 
                xLocM = xLoc + (xSiz * (xGrid + 1));         //размер ячейки, и инкрементируем колличество уже нарисованных 
                xGrid++;                                               //по горизонтали
            } else{
                yLoc = yLoc + ySiz;                                 //иначе инкрементируем y координату, и ставим вертикальный
                xGrid = 0;                                              //счётчик в 0
                xLocM = xLoc;
            }
        }
        JPanel visual = new JPanel();                                                    //Создаём панель для буковок
        visual.setSize(xSiz * 10 + 30, ySiz * 10 + 30);
        visual.setLocation(xLoc - 20, defY - 20);                                      //тут везде украшательства
        visual.setBorder(BorderFactory.createEtchedBorder());
        visual.setVisible(true);
        visual.setLayout(null);
        paintLine("АБВГДЕЁЖЗИ" , visual, xSiz * 10 + 40 , true);             //рисует линию из заданных букв, в
        paintLine("0123456789" , visual, xSiz * 10 + 40 , false);              // заданном направлении
        add(visual);
    }
Ответ:
Сообщение от ICaxapI
как можно программно расставлять кнопки
Начни с этого:
Вопрос: Программное добавление View

Не могу разобраться:
нужно программно прилепить н-ное количество вьюх. Делаю так:
Java
1
2
3
4
5
6
7
Dialog dialog = new Dialog(pd.getContext());
dialog.setContentView(R.layout.content_order_review);
LinearLayout parrent = (LinearLayout) dialog.findViewById(R.id.dlg_order_content_ll);
...
for (int i = 0; i < taxiOrder.getRouteList().size(); i++) {
                        parrent.addView(getLayoutInflater().inflate(R.layout.content_order_route_point, null));
                    }
XML-ка:
Кликните здесь для просмотра всего текста

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/driver_gray2"
    android:padding="5dp"
    android:layout_margin="15dp">
    <TextView
        android:id="@+id/item_routepoint_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="м. Речной вокзал"
        android:layout_centerVertical="true"/>
    <ImageView
        android:id="@+id/item_routepoint_done"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/check_yes"
        android:padding="3dp"
        android:background="@color/background_white"/>
    <TextView
        android:id="@+id/item_routepoint_time1"
        android:layout_width="wrap_content"
        android:layout_height="25dp"
        android:layout_toLeftOf="@+id/item_routepoint_done"
        android:background="@color/background_white"
        android:gravity="center"
        android:layout_marginRight="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:text="07:15"/>
    <TextView
        android:id="@+id/item_routepoint_time2"
        android:layout_width="wrap_content"
        android:layout_height="25dp"
        android:layout_toLeftOf="@id/item_routepoint_time1"
        android:background="@color/background_white"
        android:gravity="center"
        android:layout_marginRight="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:text="07:05"/>
</RelativeLayout>

Все добавляется всё хорошо, но добавленные вьюхи слеплены между собой, как будто параметр android:layout_margin="15dp" из ХМЛ не учитывается...
Как так?
Ответ:
Сообщение от Паблито
когда инфлейтится вьюшка ее layout_ параметры отбрасываются, грубо говоря
теперь буду знать. Первый раз программно рисую
И снова спасибо - помогло!
Вопрос: Программно сменить тип сети 2G/3G/4G

Вопрос такой возник, возможно программно менять тип сети (2G/3G/4G)?
Ответ: На моей Xiaomi (и у моих друзей) есть. Есть там в настройках SIM "тип сети" и три варианта:
-Предпочтительно 4G
-Предпочтительно 3G
-Только 2G (энергосбережение)
Я же хочу ясности. "Предпочтительно"? - нет уж.
Суть в том, что я в андройд-программировании делаю "первые шаги". И мне крайне важно научится управлять режимами сети, предпочтениями итп. Вот только, на просторах интернет, пишут, что вроде нельзя это делать программно.
Можно только вынести "ярлык" на настройки. Я пытаюсь услышать мнение гуру об этом.
(Потихоньку делаю что-то на подобии Net-монитор, и пр. всевозможной статистики работы моб. устройства)
Вопрос: Как программно создать профиль пользователя на андроид 4.4?

В андроид 7 можно создать намерение на

А можно как то программно создать профиль пользователя на 4.4? - Так как в приложении Settings в андроиде оно реализовано, значит сделать это можно, но вот как?)
Приложение которое должно создавать профили пользователей будет системным.
Ответ: Оболочку(лаунчер).
Устройство многопользовательское и есть необходимость программного создания профилей(каждый пользователь настраивает устройство под себя и т.д.)
Вопрос: Передача адреса изображения для ViewImage

Здравствуйте.


Имеется массив адресов (как я понял):
Java
1
2
private static final int[] icons = {android.R.drawable.ic_popup_reminder, android.R.drawable.ic_menu_add,
           // android.R.drawable.ic_menu_delete};
Который для каждого пункта в списке задает свое изображение:
Java
1
 holder.mBgImage.setImageResource(item.getImageResId());
Но как только я пытаюсь уйти от стандартных андроидовских изображений
Java
1
private static final int[] icons = {R.drawable.mb, R.drawable.yb, R.drawable.hb};
У меня возникает ошибка. И не могу понять с чем она связана, возможно, что изображения другого формата (png), и не правильно инициализирую массив, но я не нашел в инете как правильно...
Ответ: Оказалось, что одно из изображений было слишком большим, не углядел. Обошлось даже без android:largeHeap="true".
Спасибо shavuz.

Добавлено через 4 минуты
Сообщение от Паблито
еще один "ценный" совет
но я пожалуй действительно свалю из темы, ТС очень умен, настолько умен, что не может отловить элементарную ошибку и спорит по каждому поводу
Хотел простынь написать, но это Ваше дело. Я на каждый Ваш ответ писал свои уточняющие комментарии.
Вопрос: Наложение изображения на определенную область по клику

Здравствуйте, возникла проблема, над которой бьюсь второй день и никак не могу найти способ, как реализовать следующую задачу:

Задача стоит следующая, имеется изображение автомобиля, на которой требуется указать места повреждений в результате столкновения. То есть человек, к примеру, кликает по передней части авто и, соответственно, данная часть становиться выделенной, происходит наложение второго изображения поверх (фрагмента).

В прикрепленных изображениях в первой показано исходное, а на втором было выделено 3 части.

Через какие инструменты можно реализовать данную задачу, возможно, кто-то с этим сталкивался? Буду благодарен за любой совет или подсказку в каком направлении искать ответ.
Ответ: Ещё раз объясняю, на изображении 1 картинка каркаса автомобиля и 28, как ты выразился, секторов. 14 - обычных, 14 - в состоянии нажатые. Вероятно, есть другие варианты реализации, но это самый простой, доступный любому школьнику.