Sunday, 29 May 2016

Remove node from XML file android


          Here I am going to explain how to remove node from XML file.


  Step 1) Here I have an XML string like this

  <Transaction>
      <ComponentDetails>
           <Status new="Dhina"/>
      </ComponentDetails>
</Transaction>

        try 
          {

//Remove node from xml

        Document doc DocumentBuilderFactory.newInstance()
                  .newDocumentBuilder().parse(new InputSource(new                                                                                             StringReader(xml)));
                            
        Element element = (Element) doc.getElementsByTagName("Status").item(0); 
                               

                    if (element.getAttribute("new").equals("Dhina")) {
                        element.getParentNode().removeChild(element);
                    }

                    doc.normalize();

//Converting Document to String 

        Transformer tf =TransformerFactory.newInstance().newTransformer(); 

                    tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

                    tf.setOutputProperty(OutputKeys.INDENT, "yes");

                    Writer out = new StringWriter();

                    tf.transform(new DOMSource(doc), new StreamResult(out));

 Toast.makeText(getApplicationContext(),out.toString(),Toast.LENGTH_LONG).show();                                                                                                                                                                                                                   
                } 
                     catch (Exception e)
                  {
                    e.printStackTrace();
                }


Final Output will be like this

   <Transaction>
      <ComponentDetails>
         
      </ComponentDetails>
</Transaction>

Happy Coding:)

Tuesday, 24 May 2016

Showing Badge or count in Android app icon


                        Here I am going to explain how to set badge or count in Android app icon

                      Android without custom launchers and touch interfaces does not allow changing of the application icon, because it is sealed in the .apk tightly once the program is compiled. There is no way to change it to a 'drawable' programmatically using standard APIs.So the below code works only in Samsung,Htc,Sony etc.

                             


Step 1)BadgeUtils.java


import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;

import java.util.List;

public class BadgeUtils {


    public static void setBadge(Context context, int count) {
        setBadgeSamsung(context, count);
        setBadgeSony(context, count);

    }

    public static void clearBadge(Context context) {
        setBadgeSamsung(context, 0);
        clearBadgeSony(context);
    }


    private static void setBadgeSamsung(Context context, int count) {
        String launcherClassName = getLauncherClassName(context);
        if (launcherClassName == null) {
            return;
        }
     Intent intent = new                                                                                                  Intent("android.intent.action.BADGE_COUNT_UPDATE");
     intent.putExtra("badge_count", count);
     intent.putExtra("badge_count_package_name", context.getPackageName());
     intent.putExtra("badge_count_class_name", launcherClassName);
     context.sendBroadcast(intent);
    }

    private static void setBadgeSony(Context context, int count) {
        String launcherClassName = getLauncherClassName(context);
        if (launcherClassName == null) {
            return;
        }

        Intent intent = new Intent();
        intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE");
        intent.putExtra("com.sonyericsson.home.intent.extra.badge
               .ACTIVITY_NAME"launcherClassName);
        intent.putExtra("com.sonyericsson.home.intent.extra.badge
               .SHOW_MESSAGE", true);
        intent.putExtra("com.sonyericsson.home.intent.extra.badge
               .MESSAGE", String.valueOf(count));
        intent.putExtra("com.sonyericsson.home.intent.extra.badge
               .PACKAGE_NAME"   , context.getPackageName());
                    

        context.sendBroadcast(intent);
    }


    private static void clearBadgeSony(Context context) {
        String launcherClassName = getLauncherClassName(context);
        if (launcherClassName == null) {
            return;
        }

        Intent intent = new Intent();
        intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE");
        intent.putExtra("com.sonyericsson.home.intent.extra.badge
                 .ACTIVITY_NAME" , launcherClassName);
        intent.putExtra("com.sonyericsson.home.intent.extra.badge
                 .SHOW_MESSAGE", false);
        intent.putExtra("com.sonyericsson.home.intent.extra.badge
                 .MESSAGE", String.valueOf(0));
        intent.putExtra("com.sonyericsson.home.intent.extra.badge
                 .PACKAGE_NAME", context.getPackageName());

        context.sendBroadcast(intent);
    }

    private static String getLauncherClassName(Context context)
    {

        PackageManager pm = context.getPackageManager();

        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);

        List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
        for (ResolveInfo resolveInfo : resolveInfos) {
        String pkgName resolveInfo.activityInfo.applicationInfo.packageName;
            if (pkgName.equalsIgnoreCase(context.getPackageName()))
            {
                String className = resolveInfo.activityInfo.name;
                return className;
            }
        }
        return null;
    }
}

Step 2)MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;



public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText numInput = (EditText) findViewById(R.id.numInput);

        Button button = (Button) findViewById(R.id.btnSetBadge);
        button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                int badgeCount = 0;
                try {
                    badgeCount = Integer.parseInt(numInput.getText().toString());
                }
                 catch (NumberFormatException e)
                {
                 Toast.makeText(getApplicationContext(), "Error input",                                                                             Toast.LENGTH_SHORT).show();
                }

                 BadgeUtils.setBadge(MainActivity.this, badgeCount);


            }
        });

        Button removeBadgeBtn = (Button) findViewById(R.id.btnRemoveBadge);
        removeBadgeBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                BadgeUtils.clearBadge(MainActivity.this);
           }
        });
 }
}

Happy Coding :)

Sunday, 22 May 2016

iOS Drop-down like android Part-2



      I my  previous  tutorial I have explained how to create iOS drop-down
 http://androiddhina.blogspot.in/2016/05/ios-drop-down-like-android-part- 
 1.html.Here I am going to explain how to implement iOS drop-down in your application

                      
      

Step 1)ViewController.h


#import <UIKit/UIKit.h>
#import "NIDropDown.h"

@interface ViewController : UIViewController<NIDropDownDelegate,UITextFieldDelegate>
{
    
    
     IBOutlet UITextField *txtDropDown;
     IBOutlet UITextField *txtDropDownNew;
      NIDropDown *dropDown;
    

}

@property (retain, nonatomic) IBOutlet UITextField *txtDropDown;
@property (retain, nonatomic) IBOutlet UITextField *txtDropDownNew;

-(void)rel;
@end




Step 2)ViewController.m

#import "ViewController.h"
#import "NIDropDown.h"

@interface ViewController ()



@end

@implementation ViewController

@synthesize txtDropDown,txtDropDownNew;


- (void)viewDidLoad {
    [super viewDidLoad];
    
    txtDropDown.inputView = [[UIView alloc] initWithFrame:CGRectZero];
    self. txtDropDown.delegate = self;
    [self. txtDropDown setReturnKeyType:UIReturnKeyDone];
    
    txtDropDownNew.inputView = [[UIView alloc] initWithFrame:CGRectZero];
    self. txtDropDownNew.delegate = self;
    [self. txtDropDownNew setReturnKeyType:UIReturnKeyDone];

}



- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (void) niDropDownDelegateMethod: (NIDropDown *) sender
{
    [self rel];
    
}

-(void)rel{
    
    dropDown = nil;
}



-(void)textFieldDidBeginEditing:(UITextField *)textField{
    
    NSArray * arr = [[NSArray alloc] init];
   
    
    if(textField == txtDropDown)
    {
        arr = [NSArray arrayWithObjects:@"Air" ,@"Ocean",@"Road" ,nil];
        txtDropDown.text=@"";
        [self myMethod:txtDropDown array:arr];
    }
    
    if(textField == txtDropDownNew)
    {
         arr = [NSArray arrayWithObjects:@"Export",@"Domestic",nil];
        
        txtDropDownNew.text=@"";
        
        [self myMethod:txtDropDownNew array:arr];
    }
    
}

-(IBAction)textFieldReturn:(id)sender
{
    [sender resignFirstResponder];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //hides keyboard when another part of layout was touched
    [self.view endEditing:YES];
   
    [super touchesBegan:touches withEvent:event];
    
    
}

- (void)myMethod:(UITextField*)textField array:(NSArray*)arr
{
   CGFloat f ;

    if(dropDown == nil)
    {
          if([arr count]==2)
           {
               f= 80;
           }
           else if(([arr count]==3))
           {
               f= 120;
           }
           else if(([arr count]==4))
           {
               f= 160;
           }
           else{
               f= 200;
           }
        
        
        dropDown = [[NIDropDown alloc]showDropDown:textField :&f:arr:@"down"];
        dropDown.delegate = self;
        
    }
    else {
        [dropDown hideDropDown:textField];
        [self rel];
    }
    
   }

@end

Happy Coding:)

Saturday, 21 May 2016

iOS Drop-down like android Part-1


               Here I am going to explain How to create drop-down menu in iOS like Android.


                 


Step 1)Copy Below two classes


   NIDropDown.h
  
 #import <UIKit/UIKit.h>
 @class NIDropDown;
 @protocol NIDropDownDelegate

- (void) niDropDownDelegateMethod: (NIDropDown *) sender;

@end


@interface NIDropDown : UIView <UITableViewDelegate, UITableViewDataSource>
{
    NSString *animationDirection;
   
}
@property (nonatomic, retain) id <NIDropDownDelegate> delegate;

@property (nonatomic, retain) NSString *animationDirection;

-(void)hideDropDown:(UITextField *)b;

-(id)showDropDown:(UITextField *)b :(CGFloat *)height :(NSArray *)arr :(NSString *)direction;

@end


 NIDropDown.m

#import "NIDropDown.h"
#import "QuartzCore/QuartzCore.h"

@interface NIDropDown ()
@property(nonatomic, strong) UITableView *table;
@property(nonatomic, strong) UITextField *textSender;
@property(nonatomic, retain) NSArray *list;

@end

@implementation NIDropDown
@synthesize table;
@synthesize textSender;
@synthesize list;

@synthesize delegate;
@synthesize animationDirection;

- (id)showDropDown:(UITextField *)b :(CGFloat *)height :(NSArray *)arr :(NSString *)direction {
    textSender = b;
    animationDirection = direction;
    self.table = (UITableView *)[super init];
    if (self) {
        // Initialization code
        CGRect btn = b.frame;
        self.list = [NSArray arrayWithArray:arr];
        
        if ([direction isEqualToString:@"up"])
        {
            self.frame = CGRectMake(btn.origin.x, btn.origin.y, btn.size.width, 0);
            self.layer.shadowOffset = CGSizeMake(-5, -5);
        }
        else if ([direction isEqualToString:@"down"])
        {
          self.frame = CGRectMake(btn.origin.x, btn.origin.y+btn.size.height,                                                                                         btn.size.width, 0);
            self.layer.shadowOffset = CGSizeMake(-5, 5);
        }
        
        self.layer.masksToBounds = NO;
        self.layer.cornerRadius = 8;
        self.layer.shadowRadius = 5;
        self.layer.shadowOpacity = 0.5;
        
        table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0,                                                                                        btn.size.width, 0)];
        table.delegate = self;
        table.dataSourceself;
        table.layer.cornerRadius = 5;
        table.backgroundColor = [UIColor colorWithRed:0.239 green:0.239                                                                                      blue:0.239 alpha:1];
        table.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
        table.separatorColor = [UIColor grayColor];
        
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.5];
        if ([direction isEqualToString:@"up"]) 
        {
            self.frame = CGRectMake(btn.origin.x, btn.origin.y-*height,                                                                                      btn.size.width, *height);
        }
         else if([direction isEqualToString:@"down"]) 
         {
            self.frame = CGRectMake(btn.origin.x, btn.origin.y+btn.size.height,                                                                                btn.size.width, *height);
        }
        table.frame = CGRectMake(0, 0, btn.size.width, *height);
        [UIView commitAnimations];
        [b.superview addSubview:self];
        [self addSubview:table];
    }
    return self;
}

-(void)hideDropDown:(UIButton *)b
{
    CGRect btn = b.frame;
    
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    if ([animationDirection isEqualToString:@"up"])
    {
        self.frame = CGRectMake(btn.origin.x, btn.origin.y, btn.size.width, 0);
    }
    else if ([animationDirection isEqualToString:@"down"])
    {
        self.frame = CGRectMake(btn.origin.x, btn.origin.y+btn.size.height,                                                                                      btn.size.width, 0);
    }
    table.frame = CGRectMake(0, 0, btn.size.width, 0);
    [UIView commitAnimations];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 40;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.list count];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.textLabel.font = [UIFont systemFontOfSize:15];
        cell.textLabel.textAlignment = UITextAlignmentCenter;
    }

        cell.textLabel.text =[list objectAtIndex:indexPath.row];
        cell.textLabel.textColor = [UIColor blackColor];
    
    UIView * v = [[UIView alloc] init];
    v.backgroundColor = [UIColor grayColor];
    cell.selectedBackgroundView = v;
    
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self hideDropDown: textSender];
    
    UITableViewCell *c = [tableView cellForRowAtIndexPath:indexPath];
    [textSender setText:c.textLabel.text];

    [self myDelegate];
}

- (void) myDelegate
{
    [self.delegate niDropDownDelegateMethod:self];
    
}

-(void)dealloc
{

}
@end

   For more info click iOS Drop-down like android Part-2