Showing posts with label Featured. Show all posts
Showing posts with label Featured. Show all posts

Aim :

This tutorial mainly aims to give the recommended way for doing the HTTP connection for new api changes after API 23.
As per the new changes Apache classes are removed from the API23 so this post gives one of the way by using HttpURLConnection class.


Topics Covered :

-How to make connection using URLCoonection classes
-Setting Properties
-Making request
-Getting the Response.
-Code Snippep



-How to make connection using URLCoonection classes:

Obtain the URL Connection by making URL.openconnection()

The stream can be called by URLConnection.getInputStream()

Use the Stream classes like inputStream or Buffer reader to read the stream


-Setting Properties
 Various Properties can be set in following way
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("USER-AGENT", "Mozilla/5.0");
connection.setRequestProperty("ACCEPT-LANGUAGE", "en-US,en;0.5");
connection.setDoOutput(true); 
-Making request
   

URL url;
    HttpURLConnection urlConnection = null;
    try {
        url = new URL("http://www.yoursite.com");

        urlConnection = (HttpURLConnection) url
                .openConnection();

        InputStream in = urlConnection.getInputStream();

        InputStreamReader isw = new InputStreamReader(in);

        int data = isw.read();
        while (data != -1) {
            char current = (char) data;
            data = isw.read();
            System.out.print(current);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (urlConnection != null) {
            urlConnection.disconnect();
        }    
    }

wfrrsdfa








Aim: To know the use of selector and its implementation 

Topics Covered:
-What is Selector
-How to write
-Implementation of Selectors
-How to Apply to Button


What is selector :
Android allows different states of the button to be changed as per the users action to identify 
various action getting performed on the Button by modifying it visual appearance .The state are
pressed,selected and Normall the visual representation of these changes is manged through the Selectors  .
Selectors are basically xml part of the android project which are written in xml and placed in the drawable folder of the project.


How to write :
Selectors are written in xml and are placed in the draw-able directory of the project. 

Implementation of Selectors:


 



    
    
    




Here in this case

    



this line will pick the image with name numpad_button_bg_selected n when the state of the button is selected similarly it will work for rest of the states.



How to Apply to Button:


The Selector which you have written can be applied to button in following way
   
   



This is how you can implement the selector for the button in android it can be implemented in simillar way for image view and imagebutton as well.
When designing your application, you can use styles and themes to apply uniform formatting to its various screens and UI elements.
  • A style is a set of one or more formatting attributes that you can apply as a unit to single elements in your layout XML file(s). For example, you could define a style that specifies a certain text size and color, then apply it to instances of a certain type of View element.
  • A theme is a set of one or more formatting attributes that you can apply as a unit to all activities in an application or just a single activity. For example, you could define a theme that sets specific colors for the window frame and the panel foreground and background, and sets text sizes and colors for menus, then apply it to the activities of your application.
Styles and themes are resources. Android provides some default style and theme resources that you can use, or you can declare your owncustom style and theme resources.
To create custom styles and themes:
  1. Create a file named styles.xml in the your application's res/values directory. Add a root  node.
  2. For each style or theme, add a 


Style:-

Here's an example declaration of a style:

    

As shown, you can use  elements to set specific formatting values for the style. The name attribute in the item can refer to a standard string, a hex color value, or a reference to any other resource type.
Notice the parent attribute in the 

package com.shir60bhushan.excelContacts.About_N_Help;
import com.shir60bhushan.excelContacts.R;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.Typeface;
import android.net.Uri;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class AppRater
{
 private final static String APP_TITLE    = "Battery Saver Widget";
 private final static String APP_PNAME    = "com.batterysaverwidget";
 static Typeface    tf;
 private final static int DAYS_UNTIL_PROMPT  = 3;
 private final static int LAUNCHES_UNTIL_PROMPT = 7;


 public static void app_launched(Context mContext)
 {
  tf = Typeface.createFromAsset(mContext.getAssets(), "Merienda-Regular.ttf");
  SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0);

  if(prefs.getBoolean("dontshowagain", false))
  {
   return;
  }

  SharedPreferences.Editor editor = prefs.edit();

  // Increment launch counter
  long launch_count = prefs.getLong("launch_count", 0) + 1;
  editor.putLong("launch_count", launch_count);


 // Get date of first launch

  Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0);
  if(date_firstLaunch == 0)
  {
   date_firstLaunch = System.currentTimeMillis();
   editor.putLong("date_firstlaunch", date_firstLaunch);
  }


 // Wait at least n days before opening

  if(launch_count >= LAUNCHES_UNTIL_PROMPT)
  {
   if(System.currentTimeMillis() >= date_firstLaunch + (DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000))
   {
    showRateDialog(mContext, editor);
  }
 editor.commit();
 }

 public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor)
 {
  final Dialog dialog = new Dialog(mContext);

 TextView tvTitle = new TextView(mContext);
  dialog.setTitle(" Rate " + APP_TITLE + "  ");

  LinearLayout ll = new LinearLayout(mContext);
  ll.setOrientation(LinearLayout.VERTICAL);

  TextView tv = new TextView(mContext);
  tv.setText("If you enjoy using " + APP_TITLE + ", please take a moment to rate it. Thanks for your support!");
  tv.setWidth(240);
  tv.setTextColor(Color.WHITE);
  tv.setPadding(4, 0, 4, 10);
  tv.setTypeface(tf);
  ll.addView(tv);


  Button b1 = new Button(mContext);

  //b1.setBackgroundResource(R.drawable.selector_buttons);
  b1.setText("Rate " + APP_TITLE);
  b1.setTypeface(tf, Typeface.BOLD);
 b1.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
    mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME)));
    dialog.dismiss();
   }
  });
  ll.addView(b1);

  Button b2 = new Button(mContext);
  b2.setText("Remind me later");
  // b2.setBackgroundResource(R.drawable.selector_buttons);
  b2.setTypeface(tf, Typeface.BOLD);

  b2.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
    dialog.dismiss();
   }
  });
  ll.addView(b2);


  Button b3 = new Button(mContext);
  b3.setText("No, thanks");
  //b3.setBackgroundResource(R.drawable.selector_buttons);
  b3.setTypeface(tf, Typeface.BOLD);
  b3.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
    if(editor != null)
    {
     editor.putBoolean("dontshowagain", true);
     editor.commit();
    }
    dialog.dismiss();
   }
  });

  ll.addView(b3);
 dialog.setContentView(ll);
  dialog.show();
 }
}package com.shir60bhushan.excelContacts.About_N_Help;
import com.shir60bhushan.excelContacts.R;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.Typeface;
import android.net.Uri;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class AppRater
{
 private final static String APP_TITLE    = "Battery Saver Widget";
 private final static String APP_PNAME    = "com.batterysaverwidget";
 static Typeface    tf;
 private final static int DAYS_UNTIL_PROMPT  = 3;
 private final static int LAUNCHES_UNTIL_PROMPT = 7;


 public static void app_launched(Context mContext)
 {
  tf = Typeface.createFromAsset(mContext.getAssets(), "Merienda-Regular.ttf");
  SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0);

  if(prefs.getBoolean("dontshowagain", false))
  {
   return;
  }

  SharedPreferences.Editor editor = prefs.edit();

  // Increment launch counter
  long launch_count = prefs.getLong("launch_count", 0) + 1;
  editor.putLong("launch_count", launch_count);


 // Get date of first launch

  Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0);
  if(date_firstLaunch == 0)
  {
   date_firstLaunch = System.currentTimeMillis();
   editor.putLong("date_firstlaunch", date_firstLaunch);
  }


 // Wait at least n days before opening

  if(launch_count >= LAUNCHES_UNTIL_PROMPT)
  {
   if(System.currentTimeMillis() >= date_firstLaunch + (DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000))
   {
    showRateDialog(mContext, editor);
  }
 editor.commit();
 }

 public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor)
 {
  final Dialog dialog = new Dialog(mContext);

 TextView tvTitle = new TextView(mContext);
  dialog.setTitle(" Rate " + APP_TITLE + "  ");

  LinearLayout ll = new LinearLayout(mContext);
  ll.setOrientation(LinearLayout.VERTICAL);

  TextView tv = new TextView(mContext);
  tv.setText("If you enjoy using " + APP_TITLE + ", please take a moment to rate it. Thanks for your support!");
  tv.setWidth(240);
  tv.setTextColor(Color.WHITE);
  tv.setPadding(4, 0, 4, 10);
  tv.setTypeface(tf);
  ll.addView(tv);


  Button b1 = new Button(mContext);

  //b1.setBackgroundResource(R.drawable.selector_buttons);
  b1.setText("Rate " + APP_TITLE);
  b1.setTypeface(tf, Typeface.BOLD);
 b1.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
    mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME)));
    dialog.dismiss();
   }
  });
  ll.addView(b1);

  Button b2 = new Button(mContext);
  b2.setText("Remind me later");
  // b2.setBackgroundResource(R.drawable.selector_buttons);
  b2.setTypeface(tf, Typeface.BOLD);

  b2.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
    dialog.dismiss();
   }
  });
  ll.addView(b2);


  Button b3 = new Button(mContext);
  b3.setText("No, thanks");
  //b3.setBackgroundResource(R.drawable.selector_buttons);
  b3.setTypeface(tf, Typeface.BOLD);
  b3.setOnClickListener(new View.OnClickListener()
  {
   public void onClick(View v)
   {
    if(editor != null)
    {
     editor.putBoolean("dontshowagain", true);
     editor.commit();
    }
    dialog.dismiss();
   }
  });

  ll.addView(b3);
 dialog.setContentView(ll);
  dialog.show();
 }
}