Jelajahi Sumber

1.完成Android RA Image照片列表视图界面和功能。
2.完成Android RA Image照片预览界面。

Pen Li 9 tahun lalu
induk
melakukan
2632d10551

+ 1 - 1
RA Image/app/app.iml

@@ -78,7 +78,6 @@
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
@@ -111,6 +110,7 @@
     <orderEntry type="library" exported="" name="bcprov-jdk15on-157" level="project" />
     <orderEntry type="library" exported="" name="support-v4-25.3.1" level="project" />
     <orderEntry type="library" exported="" name="support-media-compat-25.3.1" level="project" />
+    <orderEntry type="library" exported="" name="recyclerview-v7-25.3.1" level="project" />
     <orderEntry type="library" exported="" name="support-annotations-25.3.1" level="project" />
     <orderEntry type="library" exported="" name="appcompat-v7-25.3.1" level="project" />
     <orderEntry type="library" exported="" name="support-vector-drawable-25.3.1" level="project" />

+ 1 - 0
RA Image/app/build.gradle

@@ -30,6 +30,7 @@ dependencies {
     compile 'com.android.support:appcompat-v7:25.3.1'
     compile 'com.android.support:support-v4:25.3.1'
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
+    compile 'com.android.support:recyclerview-v7:25.3.1'
 }
 android {
     useLibrary 'org.apache.http.legacy'

+ 31 - 18
RA Image/app/src/main/AndroidManifest.xml

@@ -11,6 +11,7 @@
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
 
     <application
         android:name=".RedAntApplication"
@@ -18,22 +19,25 @@
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
         android:theme="@style/AppTheme">
-        <!--<activity-->
-            <!--android:name=".MainActivity"-->
-            <!--android:configChanges="orientation|keyboardHidden"-->
-            <!--android:label="@string/app_name"-->
-            <!--android:screenOrientation="sensorLandscape"-->
-            <!--android:stateNotNeeded="true"-->
-            <!--android:theme="@style/CaptureTheme">-->
 
-            <!--&lt;!&ndash;-->
-                 <!--<intent-filter>-->
-                <!--<action android:name="android.intent.action.MAIN" />-->
+        <!-- <activity -->
+        <!-- android:name=".MainActivity" -->
+        <!-- android:configChanges="orientation|keyboardHidden" -->
+        <!-- android:label="@string/app_name" -->
+        <!-- android:screenOrientation="sensorLandscape" -->
+        <!-- android:stateNotNeeded="true" -->
+        <!-- android:theme="@style/CaptureTheme"> -->
 
-                <!--<category android:name="android.intent.category.LAUNCHER" />-->
-            <!--</intent-filter>-->
-            <!--&ndash;&gt;-->
-        <!--</activity>-->
+
+        <!-- &lt;!&ndash; -->
+        <!-- <intent-filter> -->
+        <!-- <action android:name="android.intent.action.MAIN" /> -->
+
+
+        <!-- <category android:name="android.intent.category.LAUNCHER" /> -->
+        <!-- </intent-filter> -->
+        <!-- &ndash;&gt; -->
+        <!-- </activity> -->
 
         <activity
             android:name=".MainActivity"
@@ -49,7 +53,6 @@
             </intent-filter>
             -->
         </activity>
-
         <activity
             android:name=".CaptureActivity"
             android:clearTaskOnLaunch="true"
@@ -148,13 +151,23 @@
             android:name=".POP.PopActivity"
             android:label="@string/app_name"
             android:stateNotNeeded="true"
-            android:theme="@style/Theme.AppCompat.Light"></activity>
-
+            android:theme="@style/Theme.AppCompat.Light" />
         <activity
             android:name=".Model.ModelActivity"
             android:label="@string/app_name"
             android:stateNotNeeded="true"
-            android:theme="@style/Theme.AppCompat.Light"></activity>
+            android:theme="@style/Theme.AppCompat.Light" />
+        <activity
+            android:name=".PhotoList.PhotoListActivity"
+            android:configChanges="orientation|keyboard"
+            android:screenOrientation="portrait"
+            android:stateNotNeeded="true"
+            android:theme="@style/Theme.AppCompat.Light" />
+        <activity
+            android:name=".PhotoList.NewPhotoPreviewActivity"
+            android:label="@string/app_name"
+            android:stateNotNeeded="true"
+            android:theme="@style/Theme.AppCompat.Light"/>
     </application>
 
 </manifest>

+ 8 - 1
RA Image/app/src/main/java/com/usai/redant/raimage/MainActivity.java

@@ -9,9 +9,11 @@ import java.io.Serializable;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 
 import com.usai.redant.raimage.Model.ModelActivity;
 import com.usai.redant.raimage.POP.PopActivity;
+import com.usai.redant.raimage.PhotoList.PhotoListActivity;
 import com.usai.util.Network;
 import com.usai.util.dbUtil;
 import com.usai.util.dbgUtil;
@@ -132,8 +134,13 @@ public class MainActivity extends AppCompatActivity
 				if (photoList.size() < 1)
 					return;
 
+//				Intent intent = new Intent(MainActivity.this,
+//						PhotoPreviewActivity.class);
+//				intent.putExtra("pic_list", (Serializable) photoList);
+//				startActivityForResult(intent, REQUEST_PREVIEW);
+
 				Intent intent = new Intent(MainActivity.this,
-						PhotoPreviewActivity.class);
+						PhotoListActivity.class);
 				intent.putExtra("pic_list", (Serializable) photoList);
 				startActivityForResult(intent, REQUEST_PREVIEW);
 

+ 65 - 0
RA Image/app/src/main/java/com/usai/redant/raimage/PhotoList/GridItemDecoration.java

@@ -0,0 +1,65 @@
+package com.usai.redant.raimage.PhotoList;
+
+
+import android.graphics.Rect;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.view.WindowManager;
+
+import static java.security.AccessController.getContext;
+
+
+
+public class GridItemDecoration extends RecyclerView.ItemDecoration {
+
+
+    private int spanCount;
+    private int spacing;
+    private boolean includeEdge;
+
+    public GridItemDecoration(int spanCount, int spacing, boolean includeEdge) {
+        this.spanCount = spanCount;
+        this.spacing = spacing;
+        this.includeEdge = includeEdge;
+    }
+
+    @Override
+    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+
+
+
+        GridLayoutManager layoutManager = (GridLayoutManager) parent.getLayoutManager();
+        //判断总的数量是否可以整除
+        int totalCount = layoutManager.getItemCount();
+        int columns = layoutManager.getSpanCount();// 列
+        int rowCount = totalCount % columns; // 行
+        int childPosition = parent.getChildAdapterPosition(view); // 当前位置
+
+        if (layoutManager.getOrientation() == GridLayoutManager.VERTICAL) {//竖直方向的
+
+            if (childPosition > rowCount * layoutManager.getSpanCount()) { // 最后一行
+                outRect.bottom = spacing;
+            } else if (childPosition % layoutManager.getSpanCount() == layoutManager.getSpanCount() - 1) { // 最后一列
+                outRect.right = spacing;
+            }
+            outRect.top = spacing;
+            outRect.left = spacing;
+
+        } else {
+            if (rowCount == 0 && childPosition > totalCount - layoutManager.getSpanCount() - 1) {
+                //后面几项需要右边
+                outRect.right = spacing;
+            } else if (rowCount != 0 && childPosition > totalCount - rowCount - 1) {
+                outRect.right = spacing;
+            }
+            if ((childPosition + 1) % layoutManager.getSpanCount() == 0) {//被整除的需要下边
+                outRect.bottom = spacing;
+            }
+            outRect.top = spacing;
+            outRect.left = spacing;
+        }
+
+    }
+
+}

+ 107 - 0
RA Image/app/src/main/java/com/usai/redant/raimage/PhotoList/NewPhotoPreviewActivity.java

@@ -0,0 +1,107 @@
+package com.usai.redant.raimage.PhotoList;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.support.v7.widget.DefaultItemAnimator;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.usai.redant.raimage.R;
+
+import java.io.File;
+import java.util.ArrayList;
+
+public class NewPhotoPreviewActivity extends AppCompatActivity {
+
+    private TextView indexTV;
+    private RecyclerView recyclerView;
+    private ArrayList<String> photos;
+    private int currentIdx;
+    private PreviewAdapter adapter;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_new_photo_preview);
+
+        /**Action Bar*/
+        ActionBar mActionBar = getSupportActionBar();
+        mActionBar.setHomeButtonEnabled(true);
+        mActionBar.setDisplayHomeAsUpEnabled(true);
+        mActionBar.setTitle("RA Image");
+
+        /**View*/
+        indexTV = (TextView)findViewById(R.id.index_tv);
+
+
+        /** Setting */
+        Intent intent = getIntent();
+        photos = (ArrayList<String>) intent.getSerializableExtra("photos");
+        currentIdx = intent.getIntExtra("index",0);
+
+        if (photos.size() > 0) {
+            indexTV.setText(currentIdx + 1 + " / " + photos.size());
+        }
+
+        LinearLayoutManager layoutManager = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false);
+        recyclerView.setLayoutManager(layoutManager);
+        // 设置Item增加、移除动画
+        recyclerView.setItemAnimator(new DefaultItemAnimator());
+        // 设置Adapter
+        recyclerView.setAdapter(adapter = new PreviewAdapter());
+
+
+        recyclerView.scrollToPosition(currentIdx);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+
+        switch (item.getItemId()) {
+            case android.R.id.home: {
+                finish();
+            }
+            break;
+        }
+        return true;
+    }
+
+    /**Adapter*/
+    public class PreviewAdapter extends RecyclerView.Adapter<PreviewAdapter.PreviewHolder> {
+
+        class PreviewHolder extends RecyclerView.ViewHolder {
+            ImageView imageView;
+            public PreviewHolder(View view) {
+                super(view);
+                imageView = (ImageView)view.findViewById(R.id.preview_item);
+            }
+        }
+
+        @Override
+        public PreviewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+            PreviewHolder holder = new PreviewHolder(LayoutInflater.from(NewPhotoPreviewActivity.this).inflate(R.layout.photo_preview_item,parent,false));
+            return holder;
+        }
+
+        @Override
+        public void onBindViewHolder(PreviewHolder holder, int position) {
+            String path = photos.get(position);
+            File file = new File(path);
+            Uri uri = Uri.fromFile(file);
+            holder.imageView.setImageURI(uri);
+        }
+
+        @Override
+        public int getItemCount() {
+            return photos.size();
+        }
+    }
+}

+ 215 - 0
RA Image/app/src/main/java/com/usai/redant/raimage/PhotoList/PhotoListActivity.java

@@ -0,0 +1,215 @@
+package com.usai.redant.raimage.PhotoList;
+
+import android.content.Intent;
+import android.content.res.Configuration;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.media.Image;
+import android.net.Uri;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.support.v7.widget.DefaultItemAnimator;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.Toast;
+
+import com.usai.redant.raimage.R;
+
+import java.io.File;
+import java.io.Serializable;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class PhotoListActivity extends AppCompatActivity {
+
+    private ArrayList<String> photos;
+    private ArrayList<String> deletIndexs;
+    private PhotoListAdapter adapter;
+    private GridLayoutManager layoutManager;
+    private Button deleteBtn;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_photo_list);
+
+        Intent intent = getIntent();
+        photos = (ArrayList<String>) intent.getSerializableExtra("pic_list");
+        deletIndexs = new ArrayList<String>();
+        for (int i = 0; i < photos.size(); i++) { // 默认全部未选中
+            deletIndexs.add("0");
+        }
+
+        RecyclerView recycler = (RecyclerView)findViewById(R.id.id_recyclerview);
+        deleteBtn = (Button)findViewById(R.id.photo_delete_btn);
+
+        deleteBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                for (int i = 0;i < deletIndexs.size(); i++) {
+                    int delete = Integer.valueOf(deletIndexs.get(i));
+                    if (delete == 1) {
+                        // 删除文件
+                        new File(photos.get(i)).delete();
+                        photos.remove(i);
+
+                    }
+                    adapter.notifyDataSetChanged();
+                }
+            }
+        });
+
+        // 设置布局管理器
+        layoutManager = new GridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false);
+        layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
+            @Override
+            public int getSpanSize(int position) {
+                return 1;
+            }
+        });
+        recycler.setLayoutManager(layoutManager);
+        // 添加分割线
+        recycler.addItemDecoration(new GridItemDecoration(3, getResources().getDimensionPixelSize(R.dimen.padding_middle), true));
+        // 设置Item增加、移除动画
+        recycler.setItemAnimator(new DefaultItemAnimator());
+        // 设置Adapter
+        recycler.setAdapter(adapter = new PhotoListAdapter());
+
+
+        /**Action Bar*/
+        ActionBar mActionBar = getSupportActionBar();
+        mActionBar.setHomeButtonEnabled(true);
+        mActionBar.setDisplayHomeAsUpEnabled(true);
+        mActionBar.setTitle("RA Image");
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+         switch (item.getItemId()) {
+             case android.R.id.home: {
+                 finish();
+             }
+             break;
+         }
+         return true;
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT){
+
+            layoutManager.setSpanCount(3);
+        }
+        if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
+
+            layoutManager.setSpanCount(4);
+        }
+    }
+
+    private void showPhotoPreview(int index) {
+        Toast.makeText(PhotoListActivity.this,"Click" + index,Toast.LENGTH_LONG).show();
+        Intent intent = new Intent(this,NewPhotoPreviewActivity.class);
+        intent.putExtra("photos",(Serializable)photos);
+        intent.putExtra("index",index);
+        startActivity(intent);
+    }
+
+    /**Adapter*/
+    public class PhotoListAdapter extends RecyclerView.Adapter<PhotoListAdapter.PhotoViewHolder> {
+
+        /** ViewHolder */
+        public class PhotoViewHolder extends RecyclerView.ViewHolder {
+            public ImageView photoView;
+            public ImageButton checkBtn;
+            public PhotoViewHolder(View view) {
+                super(view);
+                photoView = (ImageView)view.findViewById(R.id.photo_list_iv);
+                checkBtn = (ImageButton)view.findViewById(R.id.photo_list_checkBtn);
+            }
+        }
+
+        @Override
+        public PhotoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+            PhotoViewHolder holder = new PhotoViewHolder(LayoutInflater.from(PhotoListActivity.this).inflate(R.layout.photo_list_item,parent,false));
+            return holder;
+        }
+
+        @Override
+        public void onBindViewHolder(PhotoViewHolder holder, final int position) {
+            String path = photos.get(position);
+//            File file = new File(path);
+//            Uri uri = Uri.fromFile(file);
+//            holder.photoView.setImageURI(uri);
+
+            Bitmap bitmap = scaleImage(path,150,150);
+
+            holder.photoView.setImageBitmap(bitmap);
+
+            holder.checkBtn.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    ImageButton checkBtn = (ImageButton)v;
+                    checkBtn.setSelected(!checkBtn.isSelected());
+                    if (checkBtn.isSelected()) {
+                        checkBtn.setBackgroundDrawable(getResources().getDrawable(R.drawable.check_check));
+                        deletIndexs.set(position,"1");
+                    } else  {
+                        checkBtn.setBackgroundDrawable(getResources().getDrawable(R.drawable.check_none));
+                        deletIndexs.set(position,"0");
+                    }
+                }
+            });
+
+            holder.photoView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    showPhotoPreview(position);
+                }
+            });
+        }
+
+        @Override
+        public int getItemCount() {
+            return photos.size();
+        }
+    }
+
+    /**缩小图片*/
+    public Bitmap scaleImage(String path,int width,int height) {
+        Bitmap source = BitmapFactory.decodeFile(path);
+
+//        int originWidth = source.getWidth();
+//        int originHeight = source.getHeight();
+//
+//        int width = originWidth, height = originHeight;
+//
+//        if (originHeight > 1024 || originWidth > 1024)
+//        {
+//            if (originWidth > originHeight)
+//            {
+//                width = 1024;
+//                height = originHeight * 1024 / originWidth;
+//
+//            }
+//            else
+//            {
+//
+//                height = 1024;
+//                width = originWidth * 1024 / originHeight;
+//
+//            }
+//        }
+        Bitmap scaled = Bitmap.createScaledBitmap(source, width, height, true);
+        return scaled;
+    }
+}

TEMPAT SAMPAH
RA Image/app/src/main/res/drawable/check_check.png


TEMPAT SAMPAH
RA Image/app/src/main/res/drawable/check_none.png


+ 13 - 0
RA Image/app/src/main/res/drawable/preview_index_corner.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <corners android:radius="20dp"/>
+
+    <solid android:color="@color/white_color"/>
+
+    <stroke
+        android:width="1dp"
+        android:color="@color/white_color"
+        />
+
+</shape>

+ 32 - 0
RA Image/app/src/main/res/layout/activity_new_photo_preview.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#000000"
+    tools:context="com.usai.redant.raimage.PhotoList.NewPhotoPreviewActivity">
+
+
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/preview_recycler"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true" />
+
+    <TextView
+        android:id="@+id/index_tv"
+        android:layout_width="80dp"
+        android:layout_height="40dp"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="10dp"
+        android:background="@drawable/preview_index_corner"
+        android:gravity="center"
+        android:textSize="17sp"
+        />
+
+
+</RelativeLayout>

+ 37 - 0
RA Image/app/src/main/res/layout/activity_photo_list.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    tools:context="com.usai.redant.raimage.PhotoList.PhotoListActivity">
+
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/id_recyclerview"
+        android:divider="#ffff0000"
+        android:dividerHeight="10dp"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        tools:layout_editor_absoluteY="5dp"
+        tools:layout_editor_absoluteX="5dp" />
+
+    <View
+        android:id="@+id/seperate_line"
+        android:layout_width="match_parent"
+        android:layout_height="0.5dp"
+        android:background="@color/dark_gray"
+        />
+
+    <Button
+        android:id="@+id/photo_delete_btn"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="delete"
+        android:textSize="15sp"
+        android:textAllCaps="false"
+        />
+
+</LinearLayout>

+ 25 - 0
RA Image/app/src/main/res/layout/photo_list_item.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="100dp"
+    android:layout_height="100dp"
+    >
+
+    <ImageView
+        android:id="@+id/photo_list_iv"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scaleType="centerCrop"
+        />
+
+    <ImageButton
+        android:id="@+id/photo_list_checkBtn"
+        android:layout_width="22dp"
+        android:layout_height="22dp"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentRight="true"
+        android:layout_margin="10dp"
+       android:background="@drawable/check_none" />
+
+</RelativeLayout>

+ 12 - 0
RA Image/app/src/main/res/layout/photo_preview_item.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ImageView
+        android:id="@+id/preview_item"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        />
+
+</LinearLayout>

+ 1 - 0
RA Image/app/src/main/res/values/colors.xml

@@ -52,4 +52,5 @@
     <color name="clear_color">#00000000</color>
 
     <color name="blue">#2172ff</color>
+    <color name="white_color">#ffffffff</color>
 </resources>

+ 1 - 0
RA Image/app/src/main/res/values/dimens.xml

@@ -8,5 +8,6 @@
     <dimen name="standard_padding">8dip</dimen>
     <dimen name="half_padding">4dip</dimen>
     <dimen name="text_margin">16dp</dimen>
+    <dimen name="padding_middle">12dp</dimen>
 
 </resources>

TEMPAT SAMPAH
RA Image/captures/com.usai.redant.raimage_2017.06.16_14.32.li


TEMPAT SAMPAH
RA Image/captures/com.usai.redant.raimage_2017.06.16_14.33.li