1.Popup Post Layout யில் உள்ளீடு செய்யுங்கள்.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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="500dp">
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="412dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/popup_post_bg">
<EditText
android:id="@+id/popup_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/post_exam_title"
android:ems="10"
android:hint="Exam Title"
android:inputType="textPersonName"
android:padding="10dp"
android:textColor="#000"
android:textColorHint="#BBE0FD"
android:textSize="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.037" />
<EditText
android:id="@+id/exam_Url"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/post_exam_link"
android:ems="10"
android:hint="Online Exam Link"
android:inputType="textUri"
android:padding="10dp"
android:textColor="#000"
android:textColorHint="#BBE0FD"
android:textSize="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/popup_title" />
<EditText
android:id="@+id/exam_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/post_time"
android:ems="10"
android:hint="Hours(hh:mm)"
android:inputType="text"
android:padding="10dp"
android:textColor="#000"
android:textColorHint="#BBE0FD"
android:textSize="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/exam_date" />
<EditText
android:id="@+id/exam_by"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/post_by"
android:ems="10"
android:hint="Your Name"
android:inputType="textPersonName"
android:padding="10dp"
android:textColor="#000"
android:textColorHint="#BBE0FD"
android:textSize="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/exam_Url" />
<ImageView
android:id="@+id/popup_img"
android:layout_width="167dp"
android:layout_height="82dp"
android:layout_marginTop="8dp"
android:scaleType="centerCrop"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.483"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/exam_subj"
tools:srcCompat="@tools:sample/backgrounds/scenic" />
<TextView
android:id="@+id/add_img"
android:layout_width="79dp"
android:layout_height="23dp"
android:gravity="center"
android:text="Add Image "
android:textColor="#fff"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/popup_img"
app:layout_constraintEnd_toEndOf="@+id/popup_img"
app:layout_constraintStart_toStartOf="@+id/popup_img"
app:layout_constraintTop_toTopOf="@+id/popup_img" />
<ImageView
android:id="@+id/popup_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="24dp"
android:background="@drawable/post_upload_btn"
android:padding="12dp"
android:textColor="#000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/popup_img"
app:layout_constraintVertical_bias="0.0" />
<ProgressBar
android:id="@+id/popup_progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/circle_bg"
android:padding="4dp"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/popup_add"
app:layout_constraintStart_toStartOf="@+id/popup_add"
app:layout_constraintTop_toTopOf="@+id/popup_add"
app:layout_constraintVertical_bias="0.0" />
<EditText
android:id="@+id/exam_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/post_date"
android:ems="10"
android:hint="Date (yyyy.mm.dd)"
android:inputType="number|text"
android:padding="10dp"
android:textColor="#000"
android:textColorHint="#BBE0FD"
android:textSize="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/exam_by" />
<EditText
android:id="@+id/exam_subj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/post_time"
android:ems="10"
android:hint="Subject"
android:inputType="textPersonName"
android:padding="10dp"
android:textColor="#000"
android:textColorHint="#BBE0FD"
android:textSize="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/exam_time" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
2. FloatingActionButton யின் Code டை உள்ளீடு செய்யுங்கள்.
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
popAddPost.show();
}
});
private void iniPopup() {
popAddPost = new Dialog(this);
popAddPost.setContentView(R.layout.popup_post_add);
popAddPost.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popAddPost.getWindow().setLayout(Toolbar.LayoutParams.MATCH_PARENT,Toolbar.LayoutParams.WRAP_CONTENT);
popAddPost.getWindow().getAttributes().gravity = Gravity.TOP;
// ini popup widgets
popupPostImage = popAddPost.findViewById(R.id.popup_img);
popupTitle = popAddPost.findViewById(R.id.popup_title);
popupDescription = popAddPost.findViewById(R.id.exam_Url);
popupAddBtn = popAddPost.findViewById(R.id.popup_add);
popupClickProgress = popAddPost.findViewById(R.id.popup_progressBar);
exam_hour = popAddPost.findViewById(R.id.exam_time);
exam_date = popAddPost.findViewById(R.id.exam_date);
exam_author = popAddPost.findViewById(R.id.exam_by);
exam_lang = popAddPost.findViewById(R.id.exam_subj);
// load Current user profile photo
// Add post click Listener
popupAddBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
popupAddBtn.setVisibility(View.INVISIBLE);
popupClickProgress.setVisibility(View.VISIBLE);
// we need to test all input fields (Title and description ) and post image
if (!popupTitle.getText().toString().isEmpty()
&& !popupDescription.getText().toString().isEmpty()
&& pickedImgUri != null
&& !exam_hour.getText().toString().isEmpty()
&& !exam_author.getText().toString().isEmpty()
&& !exam_hour.getText().toString().isEmpty()
&& !exam_lang.getText().toString().isEmpty()) {
//everything is okey no empty or null value
// TODO Create Post Object and add it to firebase database
// first we need to upload post Image
// access firebase storage
StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("blog_images");
final StorageReference imageFilePath = storageReference.child(pickedImgUri.getLastPathSegment());
imageFilePath.putFile(pickedImgUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
imageFilePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String imageDownlaodLink = uri.toString();
// create post Object
Post post = new Post(popupTitle.getText().toString(),
popupDescription.getText().toString(),
imageDownlaodLink,
exam_hour.getText().toString(),
exam_author.getText().toString(),
exam_date.getText().toString(),
exam_lang.getText().toString()
);
// Add post to firebase database
addPost(post);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// something goes wrong uploading picture
showMessage(e.getMessage());
popupClickProgress.setVisibility(View.INVISIBLE);
popupAddBtn.setVisibility(View.VISIBLE);
}
});
}
});
}
else {
showMessage("Please verify all input fields and choose Post Image") ;
popupAddBtn.setVisibility(View.VISIBLE);
popupClickProgress.setVisibility(View.INVISIBLE);
}
}
});
}
private void addPost(Post post) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Exams").push();
// get post unique ID and upadte post key
String key = myRef.getKey();
post.setPostKey(key);
// add post data to firebase database
myRef.setValue(post).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
showMessage("Post Added successfully");
popupClickProgress.setVisibility(View.INVISIBLE);
popupAddBtn.setVisibility(View.VISIBLE);
popAddPost.dismiss();
}
});
}
கருத்துரையிடுக